Uygulamam ASP.NET Core RC2
çalışıyor ve durum kodu ve istisna işleyici middleware nasıl çalıştığı konusunda kafam karıştı.Neden bir istisna farklı sayfalara yönlendiriyor?
Uygulamam aşağıdaki aracı ile yapılandırılmış. o dönmelidir görüntülemek
app.UseStatusCodePagesWithReExecute("/Error/Status/{0}");
app.UseExceptionHandler("/Error/ServerError");
kontrolör kolları:
[HttpGet]
public IActionResult Status(int id)
{
switch (id)
{
case 404:
return View("404");
case 400:
return View("400");
case 500:
return View("500");
default:
return View("501");
}
}
[HttpGet]
public IActionResult ServerError()
{
return View();
}
Bilinmeyen bir URL'ye zaman Durum eylemden beklendiği gibi 404 page
dönecektir.
Bir özel durum oluşturan bir eyleme giderken, Durum eyleminden 500 page
'a değil /Error/ServerError
'a gider. Bunun Durum eylemden 500 page
dönecektir StatusCodeResult(500);
döndüren bir eylem giderseniz
public IActionResult ThrowException()
{
throw new Exception();
}
. kafamı karıştırıyor Ne
[HttpGet]
public IActionResult Error500()
{
return new StatusCodeResult(500);
}
konsol hem sonuç 500 (Internal Server Error)
ama onlar katman dayalı farklı bir sayfaya gitmek olacak döndürülür şekline göre iade gösteriyor olmasıdır. Neden bu
mı?
Emin değilim, ama 'aspnet/Diagnostics' inceledik ve ben' StatusCodePagesMiddleware' içinde durumu şu gördüğümüz: Aşağıdaki gibi bir şey yapabilirsiniz 'if (context.Response.HasStarted || ...) {döndürür;} '. Ayrıca "ExceptionHandlerMiddleware" 'de context.Response.OnStarting (_clearCacheHeadersDelegate, context.Response);'. StatusCodePagesMiddleware 'durum kodu işlenmeden önce düşünüyorum, Response zaten" ExceptionHandlerMiddleware "tarafından başlatıldı. –