我在生产中创建了一个自定义错误页面,它将要求用户更正 HTTP 状态代码页面,而不是显示丑陋的开发人员错误页面。
我现在的代码如下:
启动.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();
错误控制器:
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]
**编辑
在.net core中,如果有中间件处理异常处理,我是否需要使用try catch
尝试添加app.UseExceptionHandler("/Error/500");
除了如下所示的状态代码行。当应用程序中发生异常时,会抛出 500 错误,并且其处理方式与其他状态代码页不同。在asp.net核心中文档 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/error-handling?view=aspnetcore-3.1,首先展示如何处理异常,然后展示如何处理状态代码页。
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error/500");
app.UseStatusCodePagesWithRedirects("/Error/{0}");
app.UseHsts();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)