C# ASP.NET损坏的程序集“;无法加载文件或程序集应用程序“U Web”;

C# ASP.NET损坏的程序集“;无法加载文件或程序集应用程序“U Web”;,c#,asp.net,web-deployment-project,C#,Asp.net,Web Deployment Project,我已经通读了同一期文章中的许多其他问题,但我仍然不了解原因以及如何防止它发生 在我的例子中,这发生在生产服务器上。我得到了与其他问题中描述的相同的错误,我通过将程序集重新复制到bin目录来解决它。它们甚至不是重新编译的文件,它们与以前的文件相同——再次复制,然后它就可以正常工作了 奇怪的是,我正在使用Web部署项目将我的所有程序集文件重命名为基于文件夹的dll。所以folder.dll和folder.subfolder.dll代替了App_Web_jt8nxlz.dll。然而,该错误仍然将原始A

我已经通读了同一期文章中的许多其他问题,但我仍然不了解原因以及如何防止它发生

在我的例子中,这发生在生产服务器上。我得到了与其他问题中描述的相同的错误,我通过将程序集重新复制到bin目录来解决它。它们甚至不是重新编译的文件,它们与以前的文件相同——再次复制,然后它就可以正常工作了

奇怪的是,我正在使用Web部署项目将我的所有程序集文件重命名为基于文件夹的dll。所以folder.dll和folder.subfolder.dll代替了App_Web_jt8nxlz.dll。然而,该错误仍然将原始App_Web_jt8nxlz.dll文件命名

删除
C:\WINDOWS\Microsoft.NET\Framework[64]\v...\ASP.NET临时文件
文件夹的内容可以正常工作
,但是有人知道如何防止发生此错误吗?此外,在生产服务器上进行IIS操作时,关闭IIS或重新启动IIS确实不太可行。也许会自动清除计划程序上的临时文件夹

这里真正的问题是什么?有什么特别的原因导致这种情况发生吗?该站点将毫无问题地运行,然后突然,整个文件夹停止工作并产生此错误

Could not load file or assembly 'App_Web_jt8nxllz, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Exception type 'System.IO.FileNotFoundException' was caught.
Source: App_Web_whv5zsvd
Target Site: Void __BuildControlTree(ASP.artists_controls_artistheader_ascx)
Stack Trace:
   at ASP.artists_controls_artistheader_ascx.__BuildControlTree(artists_controls_artistheader_ascx __ctrl)
   at ASP.artists_controls_artistheader_ascx.FrameworkInitialize()
   at System.Web.UI.UserControl.InitializeAsUserControlInternal()
   at System.Web.UI.UserControl.InitializeAsUserControl(Page page)
   at ASP._artists_artist_master.__BuildControlctlArtistHeader()
   at ASP._artists_artist_master.__BuildControlctlContent(Control __ctrl)
   at System.Web.UI.CompiledTemplateBuilder.InstantiateIn(Control container)
   at ASP.master_mysite_master.__BuildControlMainContent()
   at ASP.master_mysite_master.__BuildControlform1()
   at ASP.master_mysite_master.__BuildControlBody()
   at ASP.master_mysite_master.__BuildControlTree(master_mysite_master __ctrl)
   at ASP.master_mysite_master.FrameworkInitialize()
   at System.Web.UI.UserControl.InitializeAsUserControlInternal()
   at System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection)
   at System.Web.UI.MasterPage.get_Master()
   at System.Web.UI.MasterPage.ApplyMasterRecursive(MasterPage master, IList appliedMasterFilePaths)
   at System.Web.UI.Page.ApplyMasterPage()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

我被这个击中了,有一个修补程序


虽然更新的机器/设置不再出现这种情况。

不仅仅是链接我的网站,而是我遇到了这个问题,我写道。看看吧,它有链接到这个主题的更多信息。但总而言之,这里有一些细节:

问题:

网站在尝试加载自定义web控件时引发错误。您可以看到,在上一个版本中,我们在另一个自定义web控件中添加了一个新的自定义控件,该控件将根据需要显示。因为最外部的most/父控件和新的子控件在源代码中是独立的控件,所以当.Net Framework编译这两个控件中的一个而不同时重新编译另一个控件时,将有一个过期文件试图引用程序集的旧版本。.Net framework在编译时将随机字符串追加到程序集的名称(新编译文件的名称和文件的早期版本)会导致文件名不匹配,因此外部/父控件正在查找不再存在的文件

可能的解决方法或临时修复:

1) 在web.config文件中将编译标记的批处理属性设置为false

<compilation debug="false" batch="false" />
有关更多详细信息,请参阅

在问题发生后对其进行修复:

1) 删除临时ASP.Net文件(这将关闭站点)

2) 强制父/输出控件重新编译、编辑和保存代码文件。这是一个比#1更好的修复选项,因为这不会导致网站崩溃

我的建议:

1) 首先,我认为我们应该从上面采取临时措施,这可能会防止将来出现所有问题,并且可能是我们需要的唯一答案

2) 其次,我将在QA环境中从Microsoft下载并安装934839修补程序,以验证它不会导致任何问题。在QA中测试修补程序一段时间后,我将安装修补程序,以便对此问题进行永久性修复。此时,我们可以移除1号附近的临时工作

注意:
在进行临时修复1后,我再也没有出现问题。我已经做了12个多月的修复,一切都很好

清除临时文件或更改web.config对我不起作用。对我来说,修复的方法是重新启动计算机。

此修补程序并不适用于所有人。您可以阅读更多有关此帖子的问题KB链接已断开
<compilation debug="false" numRecompilesBeforeAppRestart="50" />