【问题标题】:Response StatusCode misteriously changes from 200 to 404Response StatusCode 诡异地从 200 变为 404
【发布时间】:2013-12-28 00:45:09
【问题描述】:

当尝试访问不存在的控制器上的操作时,会在 global.asax 的 Application_OnError 中注册一个 HttpException,并将 Response.StatusCode 设置为 200。

但是,当之后到达 Application_EndRequest 时,Response.StatusCode 会设置为 404。

什么模块负责这个 StatusCode 的变化。一定是有什么东西在分析 HttpException,尽管我无法根据它确定它应该更改为 404 的原因来弄清楚。

编辑:

也许我不清楚。我没有将响应代码设置为 200。这只是我检查过的,它是由其他东西(可能是 MVC)设置的。

【问题讨论】:

  • 当实际发生 404 时,为什么要返回 OK?
  • 我不想返回 200。我只是对将它设置为 404 / 哪个模块连接来完成它感兴趣。是 MVC 还是别的什么?

标签: asp.net asp.net-mvc asp.net-mvc-4 http-status-code-404


【解决方案1】:

设置响应码为 200 后,您一定忘记清除 Application_Error 中的服务器错误:

Server.ClearError();

话虽如此,当一个 url 不存在时返回 200 OK 状态码是非常反直觉的,反 SEO 和破坏 HTTP 状态协议。

【讨论】:

  • 我没有将其设置为 200,也没有尝试将其保持在该值。我正在寻找一个在两个应用程序事件之间在后台将 200 更改为 404 的模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
相关资源
最近更新 更多