0

我们一直在我们的系统事件日志中看到这个错误的数量惊人。它涉及一个非常简单的命令行应用程序(实际上是四五行实际处理代码),它使用同一台机器上的 Web 服务。我修改了应用程序配置,它似乎解决了问题,但现在又回来了。
该错误仅出现在事件查看器中,看起来有点像这样:

事件类型:错误
事件源:.NET 运行时 2.0 错误报告
事件类别:无
事件 ID:5000
日期:19/09/2011
时间:09:26:04
用户:N/A
计算机:SQL
描述:EventType clr20r3,P1 estimatorcli .exe、P2 1.0.0.0、P3 4e410f1b、P4 mscorlib、P5 2.0.0.0、P6 4d8c128c、P7 420e、P8 51、P9 system.servicemodel.fault、P10 NIL。

对不起,如果这太多了。
谷歌搜索并没有带回大量信息,只是一些对 EventType 的模糊引用。我试过调试,很多时候,程序在我的 XP64 开发机器上运行良好(服务器运行 2003 Ent64)。但是,当我更新服务引用时,Visual Studio 会创建两个对 Web 服务的引用,当我尝试运行应用程序时,它会引发一个令人讨厌的错误,这似乎表明应用程序无法确定它应该使用哪些引用正在使用。删除 app.config 文件中的多余引用似乎可以解决此问题,但我已经完成了此操作并将编译的应用程序移至服务器,但仍然收到此错误。我还发现当应用程序是为 .Net 3.5 编写时,错误被列为 .Net 2.0 很有趣;服务器有.Net 3。
这可能是 Visual Studio 错误吗?如果是这样,有没有办法解决它?
谢谢。
更新:通过堆栈跟踪,我发现错误是我的错;我没有将足够的参数传递给存储过程。回想起来,我猜整个框架按预期工作,我只是希望错误更容易阅读!

4

2 回答 2

2

这通常是 .NET 运行时通知您应用程序中未捕获的异常的方式。

由于您有一个“简单的命令行应用程序”,请尝试放置一个 try/catch 块,同时将异常写入控制台、事件日志或某些文件。

例子:

public static int main(String[] args)
{
    try 
    {
       // other code

       return 0;
    }
    catch (Exception ex)
    {
       Console.Error.WriteLine(ex);

       // Save to file, in case this is an application that runs in the background
       // Make sure the directory exists and is writable though.
       System.IO.File.WriteAllText("C:\\TEMP\\Exception.txt", ex.ToString());

       return 1;
    }
}
于 2011-09-19T10:14:57.537 回答
0
  1. 尝试捕获异常并记录
  2. 尝试使用 AppDomain.CurrentDomain.UnhandledException 捕获意外异常并记录。
于 2011-09-19T10:28:18.047 回答