asp.net-core-mvc – 如何在Asp.Net Core中自定义Developer Exception页面?

在Startup.cs文件的Configure方法中,常见的代码如下所示:

if(env.IsDevelopment()) {
     app.UseDeveloperExceptionPage();
} 

app.UseDeveloperExceptionPage(); line会导致在发生异常时在浏览器中显示详细信息,这对调试很有帮助.

我确定你已经看到了输出,它看起来像这样:

《asp.net-core-mvc – 如何在Asp.Net Core中自定义Developer Exception页面?》

这是一个很好的开始,但有时作为开发人员,我们会向异常添加其他信息以提供有关错误的详细信息. System.Exception类具有可用于存储此类信息的Data集合.因此,例如,继承自Exception的自定义AppException具有一个构造函数,除了标准异常消息之外还接受私有消息,如下所示:

 /// <summary>
 /// Application Exception. 
 /// </summary>
 /// <param name="message">Message that can be displayed to a visitor.</param>
 /// <param name="privateMessage">Message for developers to pinpoint the circumstances that caused exception.</param>
 /// <param name="innerException"></param>
    public AppException(string message, string privateMessage, Exception innerException = null) 
        : base(message, innerException) {

        //Placing it in the exception Data collection makes the info available in the debugger
        this.Data["PrivateMessage"] = privateMessage;
    }

因此,当您可以进行映像时,如果开发人员异常页面显示来自Exception的PrivateMessage(如果它是AppException)以及所有其他信息,那就太好了.我看起来高低不知道如何定制或扩充开发人员异常页面上显示的信息,但却无法找到有关它的任何好信息.

如何自定义或扩充开发人员例外页面上显示的信息?

最佳答案 app.UseDeveloperExceptionPage()扩展方法是将DeveloperExceptionPageMiddleware添加到请求/响应管道中的简写.您可以找到DeveloperExceptionPageMiddleware
here的完整源代码,包括中间件本身和视图.它应该是滚动自己的自定义中间件的绝佳基础.

点赞