我正在尝试回答这个问题的答案:
How to make custom error pages work in ASP.NET MVC 4
我的Web.Release.config中有以下内容:
<system.web>
<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
</customErrors>
</system.web>
我正在发布模式下运行。我添加了以下控制器:
public class ErrorController : Controller
{
public ViewResult Index()
{
return View("Error");
}
public ViewResult NotFound()
{
Response.StatusCode = 404; //you may want to set this to 200
return View("NotFound");
}
}
控制器操作的视图:
@model System.Web.Mvc.HandleErrorInfo
@{
Layout = "../Shared/_Layout.cshtml";
ViewBag.Title = "Error";
}
<div class="list-header clearfix">
<span>Error</span>
</div>
<div class="list-sfs-holder">
<div class="alert alert-error">
An unexpected error has occurred.
</div>
</div>
我可以通过手动导航访问这些页面。如果我导航到一些伪造的URL,我会得到标准的黄色错误页面,其中包含丑陋的诊断信息。
The resource cannot be found.
描述:HTTP 404.您正在寻找的资源(或其中一个 依赖项)可能已被删除,其名称已更改,或者是 暂时不可用。请查看以下网址并制作 确保它拼写正确。
请求的网址:/ ss
我做错了什么?
答案 0 :(得分:2)
如果启用了自定义错误,如您的示例所示,并且您使用的是HandleErrorAttribute
,则ASP.NET MVC运行时会在当前请求文件夹或共享中查找Error.chtml
文件
views文件夹。在此设置中,defaultRedirect (to GenericErrorPage.htm)
和状态
代码重定向URI(“〜/ Error / NotFound”)被忽略。