Một cách tốt hơn để xử lý việc này tính đến nay (1.1) là để làm điều này trong Startup.cs
's Configure()
:
app.UseExceptionHandler("/Error");
Điều này sẽ thực hiện tuyến đường cho /Error
. Điều này sẽ giúp bạn tiết kiệm từ việc thêm các khối thử bắt vào mọi hành động bạn viết.
Tất nhiên, bạn sẽ cần thêm ErrorContoder tương tự như sau:
[Route("[controller]")]
public class ErrorController : Controller
{
[Route("")]
[AllowAnonymous]
public IActionResult Get()
{
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
Thêm thông tin ở đây .
Trong trường hợp bạn muốn lấy dữ liệu ngoại lệ thực tế, bạn có thể thêm dữ liệu này vào bên trên Get()
ngay trước return
câu lệnh.
// Get the details of the exception that occurred
var exceptionFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
if (exceptionFeature != null)
{
// Get which route the exception occurred at
string routeWhereExceptionOccurred = exceptionFeature.Path;
// Get the exception that occurred
Exception exceptionThatOccurred = exceptionFeature.Error;
// TODO: Do something with the exception
// Log it with Serilog?
// Send an e-mail, text, fax, or carrier pidgeon? Maybe all of the above?
// Whatever you do, be careful to catch any exceptions, otherwise you'll end up with a blank page and throwing a 500
}
Đoạn trích trên lấy từ blog của Scott Sauber .