.Net 进程的自动故障转储

Automatic Crash Dump for .Net process

我正在尝试设置一个 Windows Server 2016 实例,以便在 .Net 进程因未处理的异常退出时自动创建故障转储。我尝试了以下方法:

我已经尝试 运行 我的应用程序会生成异常。我所要做的就是在相同的配置中启动它两次,第二个实例因套接字绑定异常而崩溃。但是,在上述 none 个案例中,崩溃会生成转储文件。我是否需要在 Windows Server 2016 上做一些特别的事情,或者我需要对我的 .Net 应用程序做一些特别的事情来让它在未处理的异常上触发转储?

我找到了原因:我们正在使用 TopShelf to host our process. By default TopShelf handles uncaught exceptions 并干净地退出。

对于后来的任何人,请注意 TopShelf 从去年年底开始有一个未记录的功能来禁用此行为:

x.UnhandledExceptionPolicy = Topshelf.Runtime.UnhandledExceptionPolicyCode.TakeNoAction;

在服务配置中就可以了。使用此代码,我能够获得故障转储。