当设置为 .NET 2.0 和集成管道时,IIS 应用程序池立即崩溃

当设置为 .NET 2.0 和集成管道时,IIS 应用程序池立即崩溃

我们最近遇到一个问题,所有设置为 .NET 2.0 和集成模式的应用程序池在启动时立即崩溃。

没有任何内容进入 IIS 日志,但是 HTTPERR 日志每次都显示相同的内容:

Line 2084: 2013-11-15 01:33:39 10.71.21.242 57020 192.168.16.26 80 HTTP/1.1 GET / - 129 Connection_Abandoned_By_ReqQueue test

我已经运行了 DebugDiag 并访问了该网站,并得到了一些据我所知相对无用的信息:

 In w3wp__test__PID__5196__Date__11_14_2013__Time_03_16_34PM__253__Second_Chance_Exception_E0434352.dmp the assembly instruction at KERNELBASE!RaiseException+3d in C:\Windows\System32\KERNELBASE.dll from Microsoft Corporation has caused a CLR Exception on thread 8

该线程的堆栈跟踪:

Full Call Stack



Function     Arg 1     Arg 2     Arg 3     Arg 4   Source 
KERNELBASE!RaiseException+3d     000007fe`f9c6839c     00000000`01aed5f8     00000000`00000100     412e6d65`74737800    
MSVCR110_CLR0400!_ValidateExecute+718     00000000`00000000     00000000`01aee470     00000000`00000000     00000000`00000000    
ntdll!RtlRestoreContext+2e2     00000000`00000000     00000000`029b15f0     00000000`029511d0     00000000`01aeee50    
clr!StrongNameTokenFromAssemblyEx+11b636     0000b6b5`b887dd2b     000007fe`00000001     00000000`01aeeeb0     00000000`01aee8e8    
clr!PreBindAssemblyEx+6749     0000b6b5`b887dd2b     00000000`00000000     ffffffff`80004000     00000000`00000000    
clr!CopyPDBs+8337     00000000`00bbfe20     00000000`0215cb50     000007fe`fb736a10     00000000`00000000    
webengine!GetEcb+1ebe     00000000`0215cb50     00000000`010a28e8     00000000`0215cb50     00000000`00000000    
webengine!GetEcb+27a1     00000000`0127e49c     00000000`00000000     00000000`00346b70     00000000`0106d520    
iiscore+113f     00000000`01292648     00000000`01094c70     00000000`00000000     00000000`010a28e0    
iiscore!GetProtocolManager+189eb     00000000`01094c70     00000000`00000000     00000000`00000000     00000000`01292648    
iiscore+15d54     00000000`0127e494     00000000`00000012     00000000`00002710     00000000`00000000    
iiscore+7cd8     00000000`00000000     00000000`00000000     00000000`00000000     00000000`00000000    
iiscore+a468     00000000`01292640     00000000`01291a80     00000000`01292640     00000000`00000000    
iiscore+ab24     00000000`00000000     00000000`01291a20     00000000`00000000     00000000`0106b400    
w3dt!UlAtqGetContextProperty+c2     00000000`0106b400     00000000`00000000     000007fe`f14f0000     00000000`0019aa90    
w3dt!UlAtqGetContextProperty+8c     00000000`00000000     000007fe`fd833835     00000000`00000000     00000000`00000000    
w3tp+1fba     00000000`000005ff     00000000`01291a28     000007fe`fb901080     00000000`00000000    
w3tp+2024     00000000`00000000     00000000`0033fc40     00000000`0033fc40     000007fe`f14f0000    
w3tp+20a1     00000000`00000000     00000000`00000000     00000000`00000000     00000000`00000000    
kernel32!BaseThreadInitThunk+d     00000000`00000000     00000000`00000000     00000000`00000000     00000000`00000000    
ntdll!RtlUserThreadStart+21     00000000`00000000     00000000`00000000     00000000`00000000     00000000`00000000    

我无法在此上运行 WinDbg,因为在它崩溃之前我无法足够快地进入该进程。

我不太确定这两个特定设置是什么原因造成的(如果我更改为 .NET 4.0 - 或 - 更改为经典模式,网站将会正常工作)。

还值得注意的是:这种情况独立于每个应用程序池中运行的站点而发生 - 它发生在 Sitecore、Umbraco 和静态站点(包括 hello world 应用程序)中

答案1

在与微软进行了长时间的支持协商后,结果发现这是由于以下键被设置为 1 造成的:

HKLM\SOFTWARE\Microsoft\.NETFramework\OnlyUseLatestCLR

将其设置回 0 即可解决问题。

相关内容