基本设置
此示例将介绍如何为 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 并强制你的错误页面通过。
最后,创建相应的 NotFound
和 ServerError
视图并对其进行样式设置,以便与你的网站设计完美无瑕。
嘿 presto - 自定义错误页面。