2012-04-12 34 views
2

我在非常特定的页面上遇到此问题,我不确定如何解决此问题。 我已经发现了几个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中使用的另一个控件中收到循环引用错误,即使该控件也没有注册任何其他控件。只有一个名称空间注册,其中大多数其他控件使用的

虽然我想说循环引用和错误是相关的,但我不太清楚如何。不是没有绘制完整的依赖关系图。

任何想法?

在此先感谢!

+0

是否'〜/控制/'和/或'〜/Controls/Dialogs /'目录存在于服务器上? – robertc 2012-04-12 17:18:57

+0

@robertc:嗯,我没有检查。显然,'〜/ Controls /'文件夹存在,但是〜/ Controls/Dialogs /'文件夹不存在。奇怪,因为'〜/ Controls/Lists /'文件夹*确实存在,但它似乎构建它的唯一原因是它包含一个ASPX页面。在VS2010中,'〜/ Controls/Dialogs /'文件夹只包含ASCX文件,这可能解释了为什么它不存在于构建中... – user849924 2012-04-13 15:35:51

+0

请参见[我的相似问题](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

回答

1

将其转换为Web项目,认真。使用网站模板使用库和用户控件时,这是一个已知问题。我把它概括这里:

ASP.NET: Web Site versus Web Application Project

在里克施特拉尔的博客的更多信息(阅读评论):

Understanding Page Inheritance in ASP.NET 2.0

+1

谢谢!我会让你知道结果如何。我们通常不使用Web应用程序项目的原因是因为Web站点模型具有“编辑和继续”功能,但除此之外,我们没有真正的理由不使用它们。我在Old_App_Code中找到了一些无法找到的控件,但无论如何,我都想把它们移出去。 – user849924 2012-04-13 15:32:06

+0

这是最好的方式去;所有probs都胜过网站模板的好处。 – IrishChieftain 2012-04-13 15:38:05

+1

Hrm,显然设计器文件越来越腐败或没有正确更新。我做了一个网站范围内的搜索和替换控件,右键单击Web应用程序并执行“转换为Web应用程序”,而且我的设计器文件似乎没有任何真正发生。只有当我触摸有问题的页面/控件时,它才能正确再生。 我现在已经开始工作了,但还没有作为Web应用程序。 – user849924 2012-04-16 07:54:40

相关问题