要同时使用UseDeveloperExceptionPage()和自定义日志记录,可以按照以下步骤进行操作:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(builder =>
{
builder.AddSerilog();
});
// 添加其他服务...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger logger)
{
// 添加其他中间件...
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.ContentType = "text/plain";
var exceptionHandlerPathFeature = context.Features.Get();
var error = exceptionHandlerPathFeature?.Error;
// 记录异常信息到日志
logger.LogError(error, "An unhandled exception occurred while processing the request.");
await context.Response.WriteAsync("An internal server error occurred.");
});
});
// 使用开发者异常页面
app.UseDeveloperExceptionPage();
// 添加其他中间件...
}
通过以上代码,当发生未处理的异常时,会将异常信息记录到日志中,并在开发环境下显示开发者异常页面。在生产环境下,只会显示自定义错误信息,而不会显示开发者异常页面。