2014-01-23 22 views
2

我们有运行4000 .NET 4.0网站的Win2k8服务器。我们尽可能延迟了框架更新,并且在浏览器检测时遇到__dopostback()问题,我们无法再工作了。Reference.svcmap:无法在.NET 4.5.1更新后加载文件或程序集'xxx'

我克隆了我们的一台服务器(VM),并安装了.NET 4.5.1更新。

现在我们遇到的问题是,4.5.1的行为似乎已经改变了在模块中引发DLL引用的异常,但没有上传到服务器。

例如,我们有一个Support.DLL,它以dotless.core.dll作为参考。这只用于Windows服务(引用support.dll),但从未在Web应用程序中使用,所以dotless.core.dll从未上传(也不应该)到网站。

=== Pre-bind state information === 
LOG: DisplayName = dotless.Core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=96b446c9e63eae34 
(Fully-specified) 
LOG: Appbase = file:///C:/inetpub/root/2362/Sites/3168/Site/ 
LOG: Initial PrivatePath = C:\inetpub\root\2362\Sites\3168\Site\bin 
Calling assembly : Support, Version=2.1.0.0, Culture=neutral, PublicKeyToken=null. 

.NET 4.0框架从不抱怨,并且简单地忽略这些缺少的引用。 web.configs中没有引用。

如果我卸载了4.5.1框架更新,问题就消失了。所以这看起来是更新中的行为改变。是否有一个注册表/ machine.config选项来禁用此新行为?

不理想,但将此DLL放入GAC可解决此问题,但我们不希望在从未使用过的情况下将DLL复制到服务器。

我们有近4000个网站会在4.5.1更新应用时受到影响。部分原因是我们没有做这么久的更新。从来没有像MS想让我们相信的那样直截了当!

提前许多感谢,

保罗

+0

为什么.svcmap在标题中? – fejesjoco

+0

因为这是抛出的异常。应该在文中加上引号: – Beaker

回答

0

实际上,你可以解决的根本原因,因为没有为浏览器检测问题的修复程序:http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

MSDN只字未提,改变行为:http://msdn.microsoft.com/en-us/library/hh367887%28v=vs.110%29.aspx 。你有没有堆栈跟踪?也许在.NET 4.5.1中的一些其他更改会将您的代码引导到您的DLL中引用缺少的DLL的地方?

我创建了一个小型解决方案,一个类库和一个引用类库的控制台应用程序。如果将参数传递给控制台应用程序,它会调用类库,否则它不会。我编译它并删除了类库DLL。结果:当我通过论证时,它抱怨它无法加载程序集,否则根本没有任何问题。只有当您实际输入引用它的方法时才会执行引用加载。所以我不认为在这方面有任何新的行为。

相关问题