2017-01-05 57 views
1

我是新來的asp.net核心mvc。我需要寫全局異常處理和錯誤上palce..i記錄中不需要的所有下面寫的每個控制器請幫我在一個地方全局異常處理和在asp.net MVC核心記錄

這裏寫的全球使用是微軟的我的代碼

。 AspNet.Diagnostics;

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( 「/錯誤」); ''在配置()'方法 –

+0

謝謝..我不想寫公共IActionResult錯誤(){}在每個控制器..is任何方法寫入全局錯誤函數? – Ljt

+0

它在你的應用程序中工作。當你得到異常'UseExceptionHandler()'捕獲它並重定向到指定的控制器和操作。所以實際上你可以在'Error'動作中使用單一的'ErrorController'。 –

回答

1

Startup.cs使用.UseExceptionHandler()您可以設置路由你的錯誤動作:

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

    app.UseExceptionHandler("/error"); 

} 

這裏你可以找到更多:MSDN