【发布时间】:2016-08-29 07:34:15
【问题描述】:
我编写了一个控制台应用程序和一个配套类库来从云服务中导出一些数据。该应用程序由 SQL Server Integration Services 调用,该服务依赖于应用程序返回的退出代码来确定它是否正常工作。
应用程序间歇性地返回退出代码 -532462766 (0xE0434352),这是 .NET 未处理异常的一般错误代码。我完全搞不懂为什么会这样。
应用程序生成的日志文件没有显示任何问题,并且看起来一切都已成功完成。
应用程序事件查看器日志中没有条目。
应用程序甚至有一个未处理的异常处理程序:
AppDomain.CurrentDomain.UnhandledException += UnhandledErrorHandler;
...
private void UnhandledErrorHandler(object sender, UnhandledExceptionEventArgs e) {
logWriter.Write(e.ExceptionObject.ToString(), logLevel.Fatal);
logWriter.Write("Exiting now...", logLevel.Fatal);
Dispose();
}
我什至编写了一个批处理文件来执行应用程序并记录退出代码,然后再将其传递给 SSIS。 SSIS 收到的退出代码是应用程序返回的代码。但我看不到任何地方发生了未处理的异常。
控制台应用程序通过定义Main() 来返回退出代码,如下所示:
class Program {
static int Main(string[] args) {
...
return (Success) ? 0 : 1;
}
因为它是间歇性的(并且数据提取可能需要几个小时),所以我不能只在 Visual Studio 中运行它并对其进行调试。我怀疑这可能与应用程序确实运行了这么长时间有关,但我似乎无法确认。
还有什么其他因素可以导致 .NET 应用程序返回该退出代码?我在故障排除中遗漏了什么吗?
【问题讨论】:
-
也许this 帖子和答案可以帮助你。是否可以注释掉代码的某些部分以查明问题?您是否还部署了 PB 文件以获取更多信息,并且您是否已经排除了内存问题?
-
感谢 Jeroen,但我已经看到了这个问题,不幸的是它没有帮助,因为我已经有一个未处理的异常处理程序,并且应用程序事件查看器日志中没有条目。我将尝试部署 PDB 文件,看看是否能获得任何其他信息。