Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.net core中记录未处理的异常_C#_Asp.net Core_Error Handling_Elmah - Fatal编程技术网

C# 如何在.net core中记录未处理的异常

C# 如何在.net core中记录未处理的异常,c#,asp.net-core,error-handling,elmah,C#,Asp.net Core,Error Handling,Elmah,使用web api 2.0中的ELMAH功能和集中式日志记录和错误处理,运行时调用日志记录模块并决定是否可以处理它,然后调用处理程序,否则只记录它。。 如何在WebAPI核心中添加此功能。因为我们没有内置的集中式未处理日志功能 我得到的一种方法是使用ExceptionHandler中间件,当它被调用时,获取异常并记录它或发送电子邮件。。但如果handler没有接到电话怎么办。。如何记录这些未处理的异常 中间件可能是一个不错的选择。我在这里写了一本指南: 我可能会结合Serilog、NLog或lo

使用web api 2.0中的ELMAH功能和集中式日志记录和错误处理,运行时调用日志记录模块并决定是否可以处理它,然后调用处理程序,否则只记录它。。 如何在WebAPI核心中添加此功能。因为我们没有内置的集中式未处理日志功能


我得到的一种方法是使用ExceptionHandler中间件,当它被调用时,获取异常并记录它或发送电子邮件。。但如果handler没有接到电话怎么办。。如何记录这些未处理的异常

中间件可能是一个不错的选择。我在这里写了一本指南:

我可能会结合Serilog、NLog或log4net等日志框架来考虑

services.AddElmah(); // in ConfigureServices 

app.UseElmah(); // in Configure, before UseMvc()

如果您已经在使用Application Insights,则可以在门户中设置警报。

谢谢Thomas,这是否取决于错误记录和处理中间件的注册顺序?如果添加错误记录中间件,则应将其添加到处理异常的其他中间件之后。您希望您的中间件运行时尽可能接近抛出的异常,因为其他中间件可能会“吞下”异常。“在Startup.cs中调用UseMediddleware方法肯定有效,但创建自定义Use方法被认为是一种良好的做法:“-…为什么?我无法忍受开发人员在没有任何理由的情况下抛出“这是……的最佳实践”。为什么引入无用的包装器方法是“最佳实践”?在这里被证明是错的我很好,我只是看不到而已。尽管如此,这篇文章还是很有用的。好的观点只是一个简单的问题,我是否需要手动将try-catch块放在所有地方,并使用
HttpContext.RiseError()
将异常记录到Elmahcore?或者我会在配置代码后自动捕获抛出的异常?