Я создал пользовательскую страницу ошибок, когда в процессе работы пользователю потребуется исправить кодовую страницу статуса HTTP, а не показывать ужасную страницу ошибок разработчиков.
Мой код на данный момент выглядит следующим образом:
Startup.cs
public void Configure(IApplicationBuilder app, IHostEnvironment env, UserManager<SiteUser> user)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseStatusCodePagesWithRedirects("/Error/{0}");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSession();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
ErrorController:
public class ErrorController : Controller
{
[Route("Error/{statusCode}")]
public IActionResult HttpStatusCodeHandler(int statusCode)
{
switch (statusCode)
{
case 404:
ViewBag.ErrorMessage = "Uh oh, this page could not be found";
ViewBag.ErrorNumber = "404";
break;
case 405:
ViewBag.ErrorMessage = "Method not allowed. Contact administrator";
ViewBag.ErrorNumber = "405";
break;
case 401:
ViewBag.ErrorMessage = "You do not have acccess to this page. Please make sure you are logged in, or contact your administrator.";
ViewBag.ErrorNumber = "401";
break;
case 500:
ViewBag.ErrorMessage = "Internal Server Error. Please contact administrator.";
ViewBag.ErrorNumber = "500";
break;
case 403:
ViewBag.ErrorMessage = "Forbidden. Please contact administrator.";
ViewBag.ErrorNumber = "403";
break;
case 503:
ViewBag.ErrorMessage = "Service unavailable. Please contact administrator";
ViewBag.ErrorNumber = "503";
break;
case 504:
ViewBag.ErrorMessage = "Gateway Timeout. Please contact administrator";
ViewBag.ErrorNumber = "504";
break;
case 001:
ViewBag.ErrorMessage = "This link has expired.";
ViewBag.ErrorNumber = "Oh no!";
break;
}
return View("NotFound");
}
Моя проблема в том, что всякий раз, когда веб-приложение выдает ошибку 500, оно не приводит пользователя на эту страницу, а вместо этого на эту [! [Страницу с неправильной ошибкой] [1]] [1] страницу ...
Не уверен, что происходит не так, потому что, когда я пытаюсь получить доступ к несуществующей странице, пользователь выводит на нужную страницу:
[! [Введите описание изображения здесь] [2]] [2]
** EDIT In. net core Мне нужно использовать try catch, если есть промежуточное ПО, которое обрабатывает обработку исключений