我在非常特定的页面上遇到此问题,我不确定如何解决此问题。 我已经发现了几个SO问题(如ASP.NET corrupt assembly "Could not load file or assembly App_Web_*"和Could not load file or assembly App_Web_xxxxxxxx or one of its dependencies)并尝试了他们的解决方案,但无济于事。无法通过预编译的ASP.NET网站项目加载文件或程序集App_Web_ *
总括来说,这里就是我试过:
在web.config
重新启动IIS网站托管本网站
清除ASP设置
batch="false" numRecompilesBeforeAppRestart="50"
。 NET中的临时文件%windir%\Framework64\v4.0.30319\Temporary ASP.NET Files
重新配置
......和上述的任何组合,但无济于事。当我试图从VS运行站点,以及在没有预编译的情况下部署网站时,它工作得很好。
下面是环境的一些规格:
预编译通过Web部署项目完成。这不要紧,如果TFS或我做了预编译:问题仍然存在
.NET版本4.0.30319
程序池设置:管道模式是在.NET 4.0
集成这是特定的错误,当我打开Customer.aspx
发生:
Could not load file or assembly 'App_Web_qxcfa0wv, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
此页面已注册一个名为UserManagement.ascx
的控件,位于~/Controls/UserManagement.ascx
。
该控件已经注册了名为UserDialog.ascx
的另一个控件,该控件位于~/Controls/Dialogs/UserControl.ascx
。
而最后一个控件使用一个名为~/Controls/User.ascx
的控件来封装用户的数据。没有进一步的依赖关系。
根据堆栈跟踪,错误位于UserDialog.ascx
(<%@ Control ... %>
指令)的第1行。
我不知所措。我的猜测是它不起作用,因为~/Controls/Dialogs/UserDialog.ascx
需要位于父文件夹中的控件,这会在运行时导致某些过时的引用。有点像第一个SO问题中的问题描述。
但是,我无法简单地通过排除~/Controls/User.ascx
控件来测试,因为然后我在~/Control/UserDialog.ascx
中使用的另一个控件中收到循环引用错误,即使该控件也没有注册任何其他控件。只有一个名称空间注册,其中大多数其他控件使用的是。
虽然我想说循环引用和错误是相关的,但我不太清楚如何。不是没有绘制完整的依赖关系图。
任何想法?
在此先感谢!
是否'〜/控制/'和/或'〜/Controls/Dialogs /'目录存在于服务器上? – robertc 2012-04-12 17:18:57
@robertc:嗯,我没有检查。显然,'〜/ Controls /'文件夹存在,但是〜/ Controls/Dialogs /'文件夹不存在。奇怪,因为'〜/ Controls/Lists /'文件夹*确实存在,但它似乎构建它的唯一原因是它包含一个ASPX页面。在VS2010中,'〜/ Controls/Dialogs /'文件夹只包含ASCX文件,这可能解释了为什么它不存在于构建中... – user849924 2012-04-13 15:35:51
请参见[我的相似问题](http://stackoverflow.com/questions/5885534/asp-net-user-controls-in-a-child-directory-directory-not-found-error) - 我最终在每个仅包含'ascx'文件的目录中创建一个空的'placeholder.html'文件,以便该目录将在服务器上创建。 – robertc 2012-04-13 15:39:44