使用redirectMode =“ResponseRewrite”的customErrors不适用于共享主机

时间:2011-10-14 13:58:42

标签: asp.net iis iis-7 iis-7.5 shared-hosting

我正在尝试为我的网站设置自定义错误页面(ASP.NET 4,集成管道)。

在本地计算机上一切正常,但.aspx页面的自定义错误页面不会显示在共享主机上(我看到默认错误页面)。

如果我将redirectMode="ResponseRewrite"更改为redirectMode="ResponseRedirect",一切都可以在本地和共享计算机上正常运行。

error.aspx是一个真实文件,位于web.config文件旁边(位于网站的根目录中)。网站没有Global.asax个文件。

本地计算机运行IIS 7.5,我不使用路由(至少有意识地),共享主机告诉Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319

请您告诉我这种不同行为可能是什么原因,我该怎么做才能解决这个问题。

以下摘自我的web.config文件:

<system.webServer>
    <httpErrors errorMode="Custom">
        <remove statusCode="404" />
        <error statusCode="404" path="/error.aspx" responseMode="ExecuteURL" />      
    </httpErrors>
</system.webServer>
<system.web>
    <customErrors mode="On" defaultRedirect="error.aspx" redirectMode="ResponseRewrite">
        <error statusCode="404" redirect="~/error.aspx"/>
    </customErrors>
    <httpRuntime requestValidationMode="2.0" />
</system.web>

2 个答案:

答案 0 :(得分:2)

在与托管服务提供商讨论之后,结果证明:

  • 我的方法很好
  • 但由于托管服务提供商已通过machine.config禁用此类功能,因此无法正常工作。

所以,永远不要低估提供商的数量。

答案 1 :(得分:1)

我的web.config中有以下注释:

对于IIS 7.5,使用errorMode =“Custom”;如果使用路由,请使用responseMode =“ExecuteURL”,否则使用responseMode =“Redirect”

只是不要问我解释,因为我不知道!我只是通过反复试验来解决它。