带有redirectMode =“ResponseRewrite”的customErrors不适用于共享主机
我正在尝试为我的网站(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过与托管提供商长时间的讨论后发现:
machine.config
禁用了这种功能。因此,永远不要低估提供商陷阱的数量。
After loooong discussion with the hosting provider it turned out that:
machine.config
.So, never underestimate number of provider gotchas.
我的 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.