【问题标题】:Why does my 404 redirect not work in my web.config?为什么我的 404 重定向在我的 web.config 中不起作用?
【发布时间】:2017-04-17 18:30:42
【问题描述】:

在我的应用程序中,我有一个自定义错误,用于捕获所有意外错误,并在用户尝试访问不存在的页面时出现 404。问题是,在生产中,我可以通过在浏览器窗口中键入 url 的路径或滥用应用程序成功导航到错误页面,但我不能对 404 执行相同操作。这是我的设置。

【问题讨论】:

  • 在指定新规则之前尝试<clear />所有当前规则。
  • @AndriiLitvinov 清除自定义错误内部会导致错误 500,如果我将它放在自定义错误之前也会发生这种情况
  • 好吧,我的错,搞砸了httpErrors
  • 哪里不行?在您的桌面上运行 IISExpress?在某处运行 IIS 的已部署服务器实例上?
  • 它在 IIS 服务器 IIS 8 的生产环境中不起作用

标签: c# asp.net-mvc custom-errors


【解决方案1】:

Error/NotFound 将代替 ~/Error/NotFound 起作用,并且应该启用自定义错误(取决于您从哪里发出请求):

<customErrors mode="On" defaultRedirect="Error">
    <error statusCode="404" redirect="Error/NotFound" />
</customErrors>

同时设置httpErrors:

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="PassThrough">
        <clear />
        <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
    </httpErrors>
</system.webServer>

请注意clear 将删除所有错误的静态文件。所以考虑解锁httpErrors中的一组defaultPath

【讨论】:

  • 我试过了,还是不行。它生成与上面显示的错误相同
  • 看起来是因为 404 是由 IIS 处理的,而不是 ASP.NET。也尝试覆盖httpErrors
  • @Skullomania,我已经更新了我的答案,希望它会有所帮助。这就是我之前的一个项目的做法。
  • 我已将您更新的建议添加到我的 webconfig 以代替我的自定义错误,并将其添加到 system.web 下,结果相同。我不知道发生了什么。我可以导航到本地项目中的 notfound 页面,但不能在生产中
  • 它对我有用:existingResponse="Replace" 完整代码:&lt;httpErrors errorMode="Custom" existingResponse="Replace"&gt; &lt;clear /&gt; &lt;error statusCode="404" path="/Error/NotFound" responseMode="ExecuteURL" /&gt; &lt;/httpErrors&gt;
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-19
相关资源
最近更新 更多