Windows更新后WCF服务中的ServiceActivationException:无法加载文件或程序集'App_global.asax.vtxl8efb,Version = 0.0.0.0

时间:2012-09-25 09:19:09

标签: .net wcf iis

我在IIS中安装了一个.NET 3.5 Web应用程序,它提供了几个WCF服务。这已经在数十家公司部署了一年多,但最近一台服务器在调用服务或导航到IE中的.svc文件时遇到了这个错误:

System.ServiceModel.ServiceActivationException: The service '/MyService/MySyncService.svc' cannot be activated due to an exception during compilation. The exception message is: Could not load file or assembly 'App_global.asax.vtxl8efb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.. ---> System.IO.FileNotFoundException: Could not load file or assembly 'App_global.asax.vtxl8efb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'App_global.asax.vtxl8efb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)

服务器在周末应用了Windows更新,之后发生了此错误,服务无法正常工作。另一个.NET 3.5 Web应用程序,而不是WCF,在同一台服务器上工作正常。

  

我能够通过停止应用程序池来解决问题,删除   C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary中的文件   ASP.NET Files \ myservice,再次启动应用程序池。

但我真的很想知道为什么会发生这种情况以及我能做些什么来阻止它。在我们应用Windows更新后,要求所有客户完成这些步骤似乎不合理。

我没有使用这些应用程序中的任何一个的Web部署项目(对此类错误的唯一引用,我可以找到所有引用Web部署项目,如this)。我的Web应用程序项目已构建,然后进行复制部署。

它看起来有点像MS的this problem,他们已经发布了补丁,但实际上并不相同。

MSDN forums中交叉发布。

1 个答案:

答案 0 :(得分:1)

这是一个历史性的猜测,我认为你看到我在上一份工作中看到的东西。

安装更新时安装更新或.net框架更新并且应用程序[site]仍在使用时会出现此问题。它无法清除所需的文件,并且它不会被视为将阴影复制的缓存标记为脏的事件,因此它不会重新编译。问题是现在无法访问dll,因为[这是我不确定的地方]我认为dll上的入口点发生了变化,所以dll不会出现在系统是正确的。由于它无法找到它认为正确的东西,因此它抛出了上述异常。如果您让系统通过触摸文件[dll或config]将应用标记为已更改,则应足以使其重新编译卷影副本。