【发布时间】:2017-11-17 01:25:23
【问题描述】:
在我的 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 修改了响应代码,但我找不到执行此操作的特定过滤器。
什么可能会修改我的响应的状态代码以及如何调试所有处理给定请求的过滤器?
【问题讨论】:
-
一些操作/结果过滤器?
-
有一堆动作过滤器,我已经禁用了所有这些在全局和控制器/动作级别应用的过滤器 - 结果相同,可能一些过滤器被隐式应用,因此我需要一种方法来知道参与请求处理的所有过滤器。
-
可以在您之间使用代理并修改状态码吗?在我的工作中,他必须添加到我们的 apache 代理而不是修改标题。
-
在响应命中代理(或任何其他中间体,如提琴手)之前,状态已经更改为 204。我可以在 Application_EndRequest 读取损坏的状态,而我的控制器/操作返回状态 200 和所需的视图/模型。
-
@AlexeyStrakh 您在 IIS 中使用集成管道还是旧管道?
标签: c# asp.net asp.net-mvc action-filter http-status-code-204