我想设计一个通用错误页面,通过 HTTP 状态错误显示不同的消息。是否可以?
<customErrors mode="RemoteOnly" redirect="GenericErrorPage.htm">
例如,如果
error statusCode="403"
然后显示
Access Denied!
谢谢。
我想设计一个通用错误页面,通过 HTTP 状态错误显示不同的消息。是否可以?
<customErrors mode="RemoteOnly" redirect="GenericErrorPage.htm">
例如,如果
error statusCode="403"
然后显示
Access Denied!
谢谢。
是的,有可能,尝试类似:
<customErrors mode="On">
<error redirect="~/GenericError.aspx" statusCode="404"/>
</customErrors>
但是请记住,如果您在 IIS 7 中托管 Web 应用程序,则需要按如下方式定义自定义错误:
<system.webServer>
<httpErrors existingResponse="Replace" errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="GenericError.aspx" responseMode="Redirect" />
</httpErrors>
</system.webServer>
如果您想要一个通用的 ASPX 错误页面并根据 HTML 错误状态代码显示错误消息,您可以执行以下操作:
(我刚刚测试过,它有效)
将属性添加redirectMode="ResponseRewrite"
到您的customErrors
部分:
<customErrors mode="On" defaultRedirect="~/GenericError.aspx" redirectMode="ResponseRewrite" />
在您的通用错误页面(Page_Load 事件)中:
var ex = HttpContext.Current.Server.GetLastError();
this.lblMessage.Text += "<br/>" + ex.Message + ex.GetType().ToString();
if (ex is HttpException)
{
var nex = ex as HttpException;
this.lblMessage.Text += " " + nex.GetHttpCode().ToString();
switch (nex.GetHttpCode())
{
case 404:
// do somehting cool
break;
case 503:
// do somehting even cooler
break;
default:
break;
}
}