gpt4 book ai didi

c# - ASP.NET MVC 5 中的自定义错误页面

转载 作者:行者123 更新时间:2023-11-30 13:26:08 24 4
gpt4 key购买 nike

我想将自定义错误页面添加到我的项目中。我找到了 this post about my problem我尝试实现它。

所以:

  • 我添加404.cshtml , 404.html , 500.cshtml500.html页数
  • 在添加的 cshtml 文件中设置响应状态代码
  • 评论添加HandleErrorAttribute全局过滤器
  • 更新我的 web.config 文件

但现在当我尝试通过路径 http://localhost:120/foo/bar 时我的应用程序在 http://localhost:120 上我得到下一页:

Server Error in '/' Application.

Runtime Error

Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated.

我设置了<customErrors mode="Off"看看是什么问题。这是 - The resource cannot be found.这是合乎逻辑的。但是当我设置 <customErrors mode="On" - 我再次遇到运行时错误。

什么会导致它以及如何解决它?


我的配置文件:

<system.web>
<customErrors mode="Off" redirectMode="ResponseRewrite" defaultRedirect="~/500.cshtml">
<error statusCode="404" redirect="~/404.cshtml"/>
<error statusCode="500" redirect="~/500.cshtml"/>
</customErrors>
</system.web>

<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="404.html" responseMode="File"/>
<remove statusCode="500"/>
<error statusCode="500" path="500.html" responseMode="File"/>
</httpErrors>
</system.webServer>

IIS 版本 8.5

最佳答案

您使用的是哪个版本的 IIS?如果超过 7,则使用 <customErrors mode="Off"> 忽略自定义错误并使用 <httpErrors> .使用后者下面的方法将显示您的错误页面而不更改 IMO 是处理这些事情的首选方式的 URL。

设置一个 Error Controller 并将 404 和 500 放在那里:

<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" />
<error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" />
</httpErrors>

在 Controller 中:

public class ErrorController : Controller
{
public ActionResult servererror()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return View();
}

public ActionResult notfound()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}

}

然后显然为每个覆盖的错误设置相应的 View 。

关于c# - ASP.NET MVC 5 中的自定义错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com