ASP.NET控制器操作返回状态代码200,但EndRequest将其作为204(NoContent)

Ale*_*akh 5 c# asp.net asp.net-mvc action-filter http-status-code-204

在我的ASP.NET MVC应用程序控制器中处理请求并返回具有状态代码的特定视图200.当它到达Application_EndRequest它已经204.我的视图的响应内容是正确的并且在响应中,因此仅修改状态代码.这是一个例子(状态是204,但内容在那里):

HTTP/1.1 204 No Content
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: -1
Vary: User-Agent
Access-Control-Allow-Origin: *
Date: Fri, 24 Nov 2017 22:12:17 GMT
Run Code Online (Sandbox Code Playgroud)

它可能是ActionFilter修改响应代码,但我无法找到一个特定的过滤器来做它.

什么可能修改我的响应的状态代码,如何调试处理给定请求的所有过滤器?

Ale*_*akh 1

问题已经找到了。罪魁祸首是Child Action作为父控制器操作处理的一部分执行的。200当使用状态和内容执行父控制器操作时,Child Action作为父操作的一部分执行的 会返回NoContentstatus 204。它修改响应以具有204状态以及主要操作呈现的内容。

修复方法是确保该Child Action操作仅作为子操作起作用,并且不会修改整个响应。