더 좋은 방법이 현재로서는이 문제를 처리하기 위해 (1.1)에서이 작업을 수행하는 것입니다 Startup.cs
의 Configure()
:
app.UseExceptionHandler("/Error");
에 대한 경로가 실행됩니다 /Error
. 이렇게하면 작성하는 모든 작업에 try-catch 블록을 추가하지 않아도됩니다.
물론 다음과 유사한 ErrorController를 추가해야합니다.
[Route("[controller]")]
public class ErrorController : Controller
{
[Route("")]
[AllowAnonymous]
public IActionResult Get()
{
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
자세한 내용은 여기를 참조 하십시오 .
실제 예외 데이터를 가져 오려면 명령문 Get()
바로 앞에 이를 추가 할 수 있습니다 return
.
// 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
}
Scott Sauber의 블로그 에서 가져온 스 니펫 위 .