当前位置:  开发笔记 > 编程语言 > 正文

mscorwks.dll中的System.UnauthorizedAccessException导致应用程序池崩溃

如何解决《mscorwks.dll中的System.UnauthorizedAccessException导致应用程序池崩溃》经验,为你挑选了1个好方法。

我的应用程序池每次都在IIS 6.0 MS Debug Diag中随机崩溃到kernel32.dll.

入口点始终是mscorwks!CreateApplicationContext + bbef,结果始终是System.UnauthorizedAccessException.

堆栈跟踪:

Function                                       Arg 1        Arg 2        Arg 3   
kernel32!RaiseException+3c                     e0434f4d     00000001     00000001    
mscorwks!GetMetaDataInternalInterface+84a9     18316b3c     00000000     00000000    
mscorwks!GetAddrOfContractShutoffFlag+ac01     18316b3c     00000000     023cfbd8    
mscorwks!GetAddrOfContractShutoffFlag+ac73     00000000     000e8c88     8038b2d0    
mscorwks!GetAddrOfContractShutoffFlag+aca4     18316b3c     00000000     023cfbe4    
mscorwks!GetAddrOfContractShutoffFlag+acb2     18316b3c     acc05c33     7a399bf0    
mscorwks!CoUninitializeCor+67be                00000000     023cfc1c     023cfc8c    
mscorwks!CoUninitializeCor+87a1                001056e8     79fd87f6     023cfeb0    
mscorwks!CorExitProcess+4ad3                   023cfeb0     023cfd20     79f40574    
mscorwks!CorExitProcess+4abf                   001056e8     79f405a6     023cfd04    
mscorwks!CorExitProcess+4b3e                   000e8c88     00000000     023cfda7    
mscorwks!StrongNameErrorInfo+1ddab             00000000     00000000     023cfeb0    
mscorwks!StrongNameErrorInfo+1e07c             023cfeb0     00000000     00000000    
mscorwks!CoUninitializeEE+4e0b                 023cfeb0     023cfe5c     79f7762b    
mscorwks!CoUninitializeEE+4da7                 023cfeb0     acc05973     00000000    
mscorwks!CoUninitializeEE+4ccd                 023cfeb0     00000000     001056e8    
mscorwks!GetPrivateContextsPerfCounters+f1cd   79fc24f9     00000008     023cff14    
mscorwks!GetPrivateContextsPerfCounters+f1de   79fc24f9     acc058c3     00000000    
mscorwks!CorExeMain+1374                       00000000     00000003     00000002    
mscorwks!CreateApplicationContext+bc35         000e9458     00000000     00000000    
kernel32!GetModuleHandleA+df                   79f9205f     000e9458     00000000   

有谁知道这意味着什么以及如何解决它?

编辑:上面的堆栈跟踪结果是一个症状,而不是原因.上面的堆栈跟踪仅显示非托管堆栈,但问题发生在托管代码中.我使用下面的答案中的步骤深入了解崩溃转储并提取托管异常.



1> Ryan Michela..:

对mscorwks.dll的引用只是问题的症状.mscorwks.dll是包含公共语言运行库的DLL.

为了诊断问题的根本原因,我按照以下步骤操作:

    当IIS回收应用程序池时,使用DebugDiag捕获崩溃转储.

    在windbg中打开崩溃转储.

    在windbg命令行输入".loadby sos mscorwks"(无引号)以加载CLR调试工具

    使用!PrintException命令打印出崩溃转储中记录的最后一个异常.这很可能是导致IIS应用程序池回收的原因

    使用!clrstack命令查看引发异常的当前线程上的堆栈

    可以在此处和此处找到更多关于windbg的命令参考.最后,这篇MSDN博客提供了有关使用windbg的精彩教程.

你的debuging冒险好运!

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有