Asp.net 响应状态代码错误地从200变为404

Asp.net 响应状态代码错误地从200变为404,asp.net,asp.net-mvc,asp.net-mvc-4,http-status-code-404,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Http Status Code 404,当尝试访问不存在的控制器上的操作时,HttpException将在global.asax中的Application_OnError中注册,Response.StatusCode设置为200 但是,当随后到达应用程序_EndRequest时,Response.StatusCode将设置为404 哪个模块负责状态代码的更改。一定是有什么东西在分析HttpException,尽管我无法根据什么确定它应该更改为404 编辑: 也许我不清楚。我没有将响应代码设置为200。这是我只检查过的,它是由其他东西(

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

但是,当随后到达应用程序_EndRequest时,Response.StatusCode将设置为404

哪个模块负责状态代码的更改。一定是有什么东西在分析HttpException,尽管我无法根据什么确定它应该更改为404

编辑:


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

在将响应代码设置为200后,您一定忘了清除
应用程序中的服务器错误。\u error

Server.ClearError();

这就是说,当url不存在时返回200 OK状态代码是非常违反直觉的、反SEO的,并且破坏了HTTP状态协议。

当404实际发生时,为什么要返回OK?我不想返回200。我只是想知道是什么把它设置成404/哪个模块连接起来做这件事。是MVC还是别的什么?我没有把它设为200,也没有把它设为200。我正在寻找一个模块,它在两个应用程序事件之间的后台将200更改为404。