我正在尝试为我的网站(ASP.NET 4,集成管道)设置自定义错误页面。
在本地计算机上一切正常,但 .aspx
页面的自定义错误页面不会显示在共享主机上(我看到默认错误页面)。
如果我将 redirectMode="ResponseRewrite"
更改为 redirectMode="ResponseRedirect"
一切都可以在本地和共享计算机上正常工作。
error.aspx
是一个真实的文件,位于 web.config
文件(在网站的根目录中)旁边。网站没有 Global.asax
文件。
本地计算机运行 IIS 7.5,我不使用路由(至少有意识地),并且共享主机告诉服务器: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>
最佳答案
经过与托管提供商长时间讨论后发现:
- 我的方法很好
- 但它不会按预期工作,因为托管提供商通过
machine.config
禁用了此类功能。
因此,永远不要低估提供商陷阱的数量。
关于asp.net - 重定向模式 ="ResponseRewrite"的自定义错误不适用于共享主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7768732/