我们有运行4000 .NET 4.0网站的Win2k8服务器。我们已经尽可能地推迟了Framework更新,并且在浏览器检测中遇到__dopostback()问题,我们无法再解决这个问题了。
我克隆了我们的一台服务器(VM)并安装了.NET 4.5.1更新,好了。
我们现在遇到的问题是,4.5.1的行为似乎已经改变了为模块中的DLL引用抛出异常,但没有上传到服务器。
例如,我们有一个以dotless.core.dll作为参考的Support.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时将DLL复制到服务器。
我们有近4000个网站在应用4.5.1更新时会受到影响。部分原因是我们没有做这么长时间的更新。从来没有MS希望我们相信那么简单!
非常感谢,
保
答案 0 :(得分: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。结果:当我通过论证时,它抱怨它无法加载程序集,否则根本没有任何问题。引用加载仅在您实际输入引用它的方法时发生。所以我认为在这方面没有任何新的行为。