2017-01-05 54 views
1

私はasp.netコアmvc​​を初めて使用しています。私は私のコードのMicrosoftを使用してグローバル例外処理とログインasp.net MVCコア

である私はここに1つの場所でグローバルに

を書くために助けてくださいすべてのコントローラ内のすべての下記記述する必要はいけないpalce..i上のログイングローバル例外処理やエラーを記述する必要があります。 AspNet.Diagnostics; .UseExceptionHandler()を使用してStartup.cs

using Microsoft.AspNet.Http.Features; 
using Microsoft.AspNet.Mvc; 
using Microsoft.Extensions.Logging; 

namespace NS.Controllers 
{ 
    public class HomeController : Controller 
    { 
     static ILogger _logger; 
     public HomeController(ILoggerFactory factory) 
     { 
      if (_logger == null) 
       _logger = factory.Create("Unhandled Error"); 
     } 

     public IActionResult Error() 
     { 
      var feature = HttpContext.Features.Get<IExceptionHandlerFeature>(); 
      var error = feature?.Error; 
      _logger.LogError("Oops!", error); 
      return View("~/Views/Shared/Error.cshtml", error); 
     } 
    } 
} 
+0

あなたは 'app.UseExceptionHandler( "/エラー")を使用することができます。 '' Configure() 'のメソッド –

+0

ありがとうございました..各コントローラにpublic IActionResult Error(){}を書きたくありません。どのようなメソッドでもエラー関数をグローバルに書き込みますか? – Ljt

+0

これはあなたのアプリでグローバルに機能しています。 'UseExceptionHandler()'例外が発生した場合はそれをキャッチし、指定されたコントローラとアクションにリダイレクトします。したがって、実際には、 'Error'アクションを持つ単一の' ErrorController'を使用することができます。 –

答えて

1

あなたのエラー・アクションへの経路を設定することができます:ここで

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 

    app.UseExceptionHandler("/error"); 

} 

を、あなたはより多くを見つける:MSDN