在生产服务器上,当ASP .NET应用程序崩溃时,可以从系统事件查看器中看到此事件:
EventType clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d691cc,
P4 app_web_default.aspx.cdcab7d2,P5 0.0.0.0,P6 4b2e4bf0,P7 4,P8 4,P9
system.dividebyzeroexception,P10 NIL。*
它属于“.NET运行时2.0错误报告”类别。
但我找不到属于“ASP.NET 2.0.50727.0”类别的事件,可以给我这个例外一个详细的视图,如下所示:
如何编译使用VS2010的Windows x64位的Leptonica库?
Windows服务不能在冷启动时启动
如何使我的服务停止自动发布到Windows应用程序事件日志
如何模拟.net应用程序的低内存?
是否有可能将Windows Mobile仿真build立到应用程序中?
An unhandled exception occurred and the process was terminated. Application ID: /LM/W3SVC/505951206/Root Process ID: 1112 Exception: System.DivideByZeroException Message: Attempted to divide by zero. StackTrace: at _Default.Foo(Object state) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code,CleanupCode backoutCode,Object userData) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state) For more @R_581_4045@ion,see Help and Support Center at http://go.microsoft.com/fwlink/events.asp
我有我的开发机器上的第二个事件,是因为Visual Studio安装在那里? 如果是这样,我怎么能禁用这个,所以我可以模仿生产环境?
我可以在Windows上加载一个32位DLL到64位进程吗?
CefSharp不运行在Windows 7中
我如何等待Windows进程及其subprocess全部退出?
从任务pipe理器启动进程并隐藏命令行参数
创build自我开放的文档
有时候,您可能会在Windows事件日志中看到这个可怕的错误:
EventType clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d6968e,P4 dp.ui,P5 3.9.7.55,P6 4b49a307,P7 62e,P8 0,P9 system.stackoverflowexception,P10 NIL。
正如你可以看到它不清楚,没有堆栈跟踪,你不知道P1,…,P10和任何数字。 你知道哪一个最糟糕的是 唯一让你不睡觉,让你如果不在日志里的话,是的! “dp.ui”消息。
原因
OK,除了所有的笑话和祝福之外,当无限循环或方法调用发生时,会引发异常“system.stackoverflowexception”,因此您应该检查所有源的递归方法调用,并且可以启动Visual Studi来调试它。 但即使你的申请不是企业,也不可能一直可行。 所以你必须为P1,…,P10谷歌。 我做的不是你,所以请坐下来放松一下!
P2 :应用程序版本
P3 :申请时间戳
P4 :装配/模块名称
P5 :装配/模块版本
P6 :装配/模块时间戳
P7 :MethodDef
P8 :IL偏移量
解析度
很明显,我们需要找到P7,P8。 IL反汇编程序,Visual Studio中包含的一个工具,将帮助我们做到这一点。
执行IL disassembler,并打开你的库。
菜单:查看 – >元信息 – >显示!,注意菜单的检查列表,特别是原始复选框。
将出现一个对话框,搜索与62e组合06000 ,您将看到该类的MethodName,并通过查找您将看到第一个TypeDef声明类。 就这样!
当你去你的应用程序,你可能会看到递归调用,你应该检查使这个循环退出的条件!
在Windows和服务应用程序中,这个异常可能如下所示,你应该通过“IL disassembler”来检查“sib.infobase.workflow.services.exe”:
EventType clr20r3,P1 sib.infobase.workflow.services,P2 1.0.2740.20114,P3 468a74f5,P4 sbpscs,P5 1.0.2740.20087,P6 468a74be,P7 1c,P8 120,P9 zxkyzcs5wacordmkttdkr1xouosi00fr,P10 NIL。
如果你在网上冲浪,你可能会看到像微软这样的解决方案: http : //support.microsoft.com/kb/911816 ,但是这个例外可能无法正常工作。
参考
http://www.netframeworkdev.com/common-language-runtime/clr20r3-from-a-windows-service-calling-a-dot-net-dll-32830.shtml
http://social.msdn.microsoft.com/Forums/en-US/netfxtoolsdev/thread/ec36eff9-ac9f-46da-afa1-92be489d6a56
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。