首页 文章

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

提问于
浏览
5

在我的 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

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

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

2 回答

  • 1

    这是正确的,这意味着系统的一切都很好,数据(内容)不正确。

    例如,Employee 表有两条记录,其 id 为 1 和 2.如果使用 ef 更新 id = 3 的记录,则会出现此错误。

    您需要做的是......对您的数据进行适当的验证。

  • 1

    问题已经找到。罪魁祸首是Child Action,它是作为父控制器动作处理的一部分执行的。当使用200状态加上内容执行父控制器操作时,Child Action(作为父操作的一部分执行)将返回NoContent和 status 204。它修改响应以使204状态加上主要操作呈现的内容。

    解决方法是确保Child Action仅作为子操作,而不是修改整个响应。

相关问题