1

我想设计一个通用错误页面,通过 HTTP 状态错误显示不同的消息。是否可以?

<customErrors mode="RemoteOnly" redirect="GenericErrorPage.htm">

例如,如果

 error statusCode="403"

然后显示

 Access Denied!

谢谢。

4

1 回答 1

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>

编辑 1

如果您想要一个通用的 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;
        }
    }
于 2012-07-20T20:44:13.983 回答