我想设计一个通用错误页面,它通过HTTP状态错误显示不同的消息。有可能吗?
<customErrors mode="RemoteOnly" redirect="GenericErrorPage.htm">
例如,如果
error statusCode="403"
然后显示
Access Denied!
感谢。
答案 0 :(得分:1)
是的,它可能,尝试类似的事情:
<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;
}
}