2

我在一个非常具体的页面上遇到了这个问题,我不知道如何解决它。我已经发现了几个 SO 问题(例如ASP.NET 损坏的程序集“无法加载文件或程序集 App_Web_*”无法加载文件或程序集 App_Web_xxxxxxxx 或其依赖项之一)并尝试了他们的解决方案,但无济于事。

回顾一下,这是我尝试过的:

  • batch="false" numRecompilesBeforeAppRestart="50"在 web.config 中设置

  • 重新启动托管此网站的 IIS 网站

  • 清除 ASP.NET 中的临时文件%windir%\Framework64\v4.0.30319\Temporary ASP.NET Files

  • 已调动

...以及上述的任何组合,但无济于事。当我尝试从 VS 运行网站以及在没有预编译的情况下部署网站时,它工作得非常好。

以下是一些环境规格:

  • 预编译是通过 Web 部署项目完成的。无论是 TFS 还是我进行了预编译都没有关系:问题仍然存在

  • .NET 版本为 4.0.30319

  • AppPool 设置:管道模式集成在 .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,即使该控件也没有注册任何其他控件。只有一个命名空间注册,大多数其他控件都使用它。

我会说循环引用和错误是相关的,但我不能完全说明如何。并非没有绘制整个依赖关系图。

有任何想法吗?

提前致谢!

4

1 回答 1

1

认真地将其转换为 Web 项目。将库和用户控件与网站模板一起使用时,这是一个已知问题。我在这里总结了一下:

ASP.NET:网站与 Web 应用程序项目

有关 Rick Strahl 博客的更多信息(阅读评论):

了解 ASP.NET 2.0 中的页面继承

于 2012-04-12T17:22:25.867 回答