15

以前の ASP.NET バージョンでは、他のコントローラーから継承された BaseController を作成し、そこで一般的なエラーをインターセプトして、単純なログ メソッドで各エラーをログに記録し、ExceptionContext filterContextを渡していました。

ASP.NET 5 でも同じことを行う必要がありますか?

ファイルStartup.csに、デバッグ/ライブ状態を基本的に分離するif / elseステートメントがあることがわかります。

app.UseErrorHandler("/Home/Error");

本番アプリケーション用。

プロセスをフックしてエラーをログに記録するにはどうすればよいですか?

4

1 に答える 1

17

ASP.NET 5 でのエラーの処理とログ記録には、いくつかの要素が含まれます。

運用シナリオでエラーを処理し、エラー ページを表示するには、このapp.UseExceptionHandler()方法が最適です。ASP.NET GitHub 組織の Diagnostics リポジトリには、これを示すサンプルが含まれています。完全なスタック トレースやその他の診断情報を表示する必要がある開発時のシナリオでは、このサンプルapp.UseDeveloperExceptionPage()に示されているように使用します。

アプリケーションが ASP.NET MVC 6 を使用している場合、ASP.NET MVC の以前のバージョンと同様に、MVC 固有のエラー処理方法があります。ASP.NET MVC 6 では、フィルター (またはフィルターでもあるコントローラー自体) がOnActionExecutedメソッドを処理/オーバーライドし、パラメーターを検査しActionExecutedContextてエラーの処理を試みることができます。

ロギングに関して言えば、ASP.NET 5 には新しいロギング インフラストラクチャがあり、登録されているすべての に大量の情報を報告しますILogger。Visual Studio 2015 の既定のプロジェクト テンプレートは、エラー (およびその他のデータ) をコンソールと Visual Studio デバッグ出力ウィンドウに記録するいくつかのロガーを登録します。ただし、IIS または IIS Express で実行する場合、コンソール ウィンドウはありません (まだ!)。ただし、コマンド ラインから (を使用してdnx web) 実行すると、エラーが表示されます。もちろん、ログ ファイルまたはデータベースに書き込む別のロガーを登録して、そこでログを表示することもできます。

ILoggerWeb アプリでカスタムを登録するには:

  1. インターフェイスを実装するロガーを作成しILoggerます。これを行う方法については、 DNX の実装を参照してください。
  2. ILoggerFactory型のパラメーターをアプリのStartupクラスのConfigureメソッドに追加します。
  3. メソッド内で、ロガーのインスタンスをConfigure呼び出して渡します。loggerFactory.AddProvider(<some provider>)
于 2014-11-16T20:10:14.200 に答える