use*_*353 5 c# error-handling .net-core asp.net-core
我的 ASP.NET Core 应用程序中有以下代码来处理错误:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler(builder =>
{
builder.Run(async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var loggingService = context.RequestServices.GetService<ILoggingService>();
var exceptionFeature = context.Features.Get<IExceptionHandlerFeature>();
if (exceptionFeature != null)
{
Exception ex = exceptionFeature.Error;
Console.Error.WriteLine(ex.Message + " " + ex.StackTrace);
loggingService.Error(ex);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,在Development环境中时,我想UseDeveloperExceptionPage()对数据库日志记录使用和自定义错误处理。但这似乎不起作用(UseExceptionHandler()禁用了 的功能UseDeveloperExceptionPage())。
有没有办法实现这一点,而无需编写UseDeveloperExceptionPage()代码表单?
对于内置的UseDeveloperExceptionPage,它没有公开任何扩展方法来自定义错误过程,您可以尝试实现自己的中间件来记录错误,例如
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
};
app.Use(async (context, next) =>
{
try
{
await next.Invoke();
}
catch (Exception ex)
{
//var loggingService = context.RequestServices.GetService<ILoggingService>();
//loggingService.Error(ex);
Console.Error.WriteLine(ex.Message + " My " + ex.StackTrace);
throw;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |