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修改响应代码,但我无法找到执行此操作的特定过滤器。

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

4

2 回答 2

1

它在某种程度上是正确的,这意味着系统一切正常,数据(内容)有问题。

例如,Employee 表有两条记录,其 id 为 1 和 2。如果您使用 ef 更新 id = 3 的记录,您将收到此错误。

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

于 2017-11-27T02:41:52.197 回答
1

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

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

于 2017-11-27T19:51:01.053 回答