Http Headers设置在基本控制器中?

时间:2011-10-25 13:13:25

标签: c# asp.net-mvc http

我正在尝试在网站的每个页面请求上设置Http标头。为此,添加标头的代码(Response.AppendHeader(“p3p”,“{HeaderInfoHere}”))放置在基本控制器的OnActionExecuted覆盖中(因此无论何时调用任何操作都会调用它)。

问题是,只要在调用操作时(所有其他控制器都从基本控制器继承)附加标题,标题就会反复添加,具体取决于有多少其他操作(部分视图等)被称为初始请求的一部分。

我无法查询Response对象的Headers集合 - 我们得到一个PlatformNotSupported异常,因为在我们的服务器上禁用了IIS集成管道模式(我无法更改)所以我无法直接检查此标头是否已经已被添加。

任何人都可以建议一种更好的方法将标头(一次)附加到MVC中的GET请求或解决此方案吗?

1 个答案:

答案 0 :(得分:0)

将数据添加到您的ControllerContext(可能在RouteData中),注意您的代码'我已添加此标题',您在添加之前检查了该标题。您也可以尝试使用Session(在任何人窒息之前 - TempData已经使用它)

可以通过controllerContext.HttpContext.Session

访问该会话