gpt4 book ai didi

c# - ASP.NET Core - 同时使用 UseDeveloperExceptionPage() 和自定义日志记录

转载 作者:行者123 更新时间:2023-11-30 15:52:01 26 4
gpt4 key购买 nike

我的 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);
}
});
}

但是,在 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;
}

});

关于c# - ASP.NET Core - 同时使用 UseDeveloperExceptionPage() 和自定义日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com