如何调试事件查看器中记录的.NET错误?

问题描述:

嗨,我发现我的应用程序导致一些错误登录在事件日志如何调试事件查看器中记录的.NET错误?

它指出:

NET Runtime 2.0 Error 

    EventType clr20r3, P1 *****.exe, P2 1.0.0.0, P3 4b2a572f, P4 system.web.services, P5 2.0.0.0, P6 4889df18, P7 bc, P8 65, P9 system.net.webexception, P10 NIL. 

我怎样才能找出发生了什么事?我在本地尝试过这个应用程序,一切正常。

你能描述更多关于它的应用类型吗?它在做什么,它是互动的还是非互动的?

实际错误是system.net.webexception - 这是与网页或网络服务通信的某种形式的问题。这本身就表明它可能是一个间歇性的错误,如果它在您尝试时可以正常工作。

当它远程运行时,它或者什么都不正确 - 与您的环境有所不同。例如,您是否使用在远程运行应用程序时不可用的内部DNS条目?

你会想抓住你的应用程序(在你的main法像一个整体try { } catch { })所有的异常,并记录异常到一个文件,或者把它给他们发电子邮件给自己,这样你就可以更详细地看到发生了什么。

+0

是的..它是一个应用程序连接到服务器1,获取一个XML文件..然后连接到MS报告服务获取一些报告,并最终连接到服务器3,它发送一些生成的文件 – 2010-03-31 15:11:47

+0

是否可以是报告它的提取时间比Web服务客户端要等待的时间要长,并且超时? – 2010-03-31 15:13:29

+0

是的,这可能是原因..但我不明白它..因为我有这段代码在try catch子句 – 2010-03-31 15:14:54

它看起来像一个未处理的异常。如果它是在Web应用程序或服务中生成的,则可以尝试在global.asax文件中放置全局异常处理程序。示例见here。您可以捕获错误并向事件日志输出一些更好的信息。

+0

据我可以告诉从错误日志,它是一个.exe,因此一个Windows应用程序,而不是一个Web应用程序。 – 2010-03-31 15:11:11

+0

问题是,应用程序是由系统调度程序启动的控制台应用程序 – 2010-03-31 15:12:45

+0

@Andy ..正确的Andy ..它的一个.exe直接驻留在机器上 – 2010-03-31 15:13:23

你的应用程序崩溃了未处理的异常。沃森日志不足以找到原因。为AppDomain.CurrentDomain.UnhandledException事件编写一个事件处理程序,让它将e.ExceptionObject.ToString()写入事件日志,以便获得一个很好的堆栈跟踪,以显示为什么以及它在哪里被轰炸。

这里是你的事件日志条目

P4 system.web.services - module that was throwing the exception 
P9 system.net.webexception - Exception Type 
P8 65 - IL Offset where the exception was thrown 

简单的解释这是沃森桶得到异常的调用堆栈。从.NET 2.0开始,Watson报告提供了这些信息。

以上是MSDN article的上述说明。