2017-01-26 6 views
4

それは、このようなコードを持っているStartup.csファイルのConfigure方法では一般的です:Asp.Net Coreの開発者例外ページをカスタマイズするには?

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

app.UseDeveloperExceptionPage();行は例外のために非常に有用である発生したときに、ブラウザに表示される詳細情報を引き起こしデバッグ

私はあなたが出力を見てきた確信している、それはこのようなものになります。

enter image description here

これは素晴らしいスタートですが、時には、開発者として、我々はについての詳細を提供するために、例外に情報を追加しますエラー。 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; 
    } 

を、それは開発者があればいいと思います例外ページにはExceptionAppExceptionの場合)と他のすべての情報が表示され、PrivateMessageが表示されます。私は、開発者の例外ページに表示される情報をカスタマイズまたは拡張する方法を把握するために、多かれ少なかれ見てきましたが、良い情報は見つかりませんでした。

デベロッパーの例外ページに表示される情報をカスタマイズまたは拡張するにはどうすればよいですか?

答えて

1

app.UseDeveloperExceptionPage()拡張メソッドは、DeveloperExceptionPageMiddlewareを要求/応答パイプラインに追加するための略語です。ミドルウェア自体とビューを含むDeveloperExceptionPageMiddlewarehereの完全なソースコードを見つけることができます。独自のカスタムミドルウェアを実行するための優れた基盤となるはずです。

+0

チップをありがとう。あなたのリンクからは、https://github.com/aspnet/Common/blob/ffb7c20fb22a31ac31d3a836a8455655867e8e16/shared/Microsoft.Extensions.StackTrace.Sources/ExceptionDetailsProvider.csにあるExceptionDetailsProviderが使用され、実際のHTML出力は「ErrorPage」はhttps://github.com/aspnet/Diagnostics/blob/3a868d87a2458fd025ca71e2538b3a72f67c7c50/src/Microsoft.AspNetCore.Diagnostics/DeveloperExceptionPage/Views/Obsolete/ErrorPage.csにあります。残念ながら、「ErrorPage」は生成された.csではありません。 cshtml。 Arg。 –

+1

@RonCあなたが投稿した2番目のリンクは 'Obsolete'名前空間にあります。これはあなたが探しているcshtmlファイルではありませんか? https://github.com/aspnet/Diagnostics/blob/dev/src/Microsoft.AspNetCore.Diagnostics/DeveloperExceptionPage/Views/ErrorPage.cshtml – Polynomial

+0

あなたは絶対に正しいです。ありがとうございました! –

関連する問題