asp.net-mvc如何从 404 未找到错误在 ASP.NET MVC 中删除查询字符串

发布时间: 2017/3/25 1:25:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我已经建立了一个自定义 404 Not Found 错误页使用的 httpErrors 节我 Web.config 文件。

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404"/>
  <error statusCode="404" responseMode="ExecuteURL" path="/error/notfound"/>
</httpErrors>                                

当浏览器中打开的网页不存在时,我得到以下 URL:

http://localhost/error/notfound?404;http://localhost/ThisPageDoesNotExist/

我不想在 URL 中的查询字符串,我也不愿意到 301 或 302 重定向至初一页。我如何可以做到这一点?使用 URL 重写也许?

解决方法 1:

如果我理解正确,你想要处理处理不需要重写 url,通过简单地返回结果视图的404未找到错误

这是实现的一种方法使用旧 customErrors 但与 redirectMode="ResponseRewrite" 以确保不会更改原始 url。

   <customErrors mode="On" redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="~/NotFound" />
  </customErrors>  

另一种是使用 httpErrors 方法与 existingResponse="Replace" 完全是你现在正在使用它

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

我试图重新创建您的问题,只成功了当时两个 httpErrorscustomErrors 设置,而不redirectMode="ResponseRewrite"

我的结论︰你可能正在使用 customErrors 没有 ResponseRewrite 的优先级高于 httpErrors 处理程序。

官方微信
官方QQ群
31647020