基本设置

此示例将介绍如何为 404 Page Not Found 和 500 Server Error 创建自定义错误页面。你可以扩展此代码以捕获你需要的任何错误代码。

Web.Config 中

如果你使用的是 IIS7 及更高版本,请忽略 <CustomError.. 节点并改用 <httpErrors...

system.webServer 节点中添加以下内容:

<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>

这告诉网站将任何 404 错误导向~/error/notfound,将任何 500 错误导向~/error/servererror。它还会保留你请求的 URL(想想转移而不是重定向 ),这样用户就永远不会看到~/error/... 页面 URL。

接下来,你需要一个新的 Error 控制器……

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();
    }

} 

这里需要注意的关键是 Response.TrySkipIisCustomErrors = true;。这将绕过 IIS 并强制你的错误页面通过。

最后,创建相应的 NotFoundServerError 视图并对其进行样式设置,以便与你的网站设计完美无瑕。

嘿 presto - 自定义错误页面。