2

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

如何使自定义错误页面在 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。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的网址:/ss

我究竟做错了什么?

4

1 回答 1

2

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

于 2013-10-05T08:10:43.717 回答