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

发布于 2024-12-09 14:31:14 字数 1124 浏览 1 评论 0原文

我正在尝试为我的网站(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>

I am trying to setup custom error pages for my site (ASP.NET 4, integrated pipeline).

Everything works properly on local machine but custom error pages for .aspx pages do not get shown on shared hosting (I see default error pages).

If I change redirectMode="ResponseRewrite" to redirectMode="ResponseRedirect" everything works properly on local and shared machine.

error.aspx is a real file that resides next to web.config file (in the root of the site). Site has no Global.asax file.

Local machine runs IIS 7.5, I do not use routing (at least consciously) and shared hosting tells that Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319

Could you please tell me what might be the reason for such different behavior and what should I do to resolve the issue.

Here is excerpt from my web.config file:

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

是你 2024-12-16 14:31:14

经过与托管提供商长时间的讨论后发现:

  • 我的方法很好
  • ,但它不会按预期工作,因为托管提供商通过 machine.config 禁用了这种功能

因此,永远不要低估提供商陷阱的数量。

After loooong discussion with the hosting provider it turned out that:

  • my approach is fine
  • but it won't work as expected because hosting provider disabled such ability via machine.config.

So, never underestimate number of provider gotchas.

信仰 2024-12-16 14:31:14

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

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

只是不要让我解释,因为我不知道!我只是通过反复试验才解决了这个问题。

I have the following comment in my web.config:

for IIS 7.5, use errorMode="Custom"; use responseMode="ExecuteURL" if using routing, otherwise use responseMode="Redirect"

Just don't ask me to explain, because I don't know! I just sorted it out by trial and error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文