自定义错误不适用于MVC4项目?

时间:2013-10-03 21:06:53

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我正在尝试回答这个问题的答案:

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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

如果启用了自定义错误,如您的示例所示,并且您使用的是HandleErrorAttribute,则ASP.NET MVC运行时会在当前请求文件夹或共享中查找Error.chtml文件 views文件夹。在此设置中,defaultRedirect (to GenericErrorPage.htm)和状态 代码重定向URI(“〜/ Error / NotFound”)被忽略