【问题标题】:Http Headers set in base controller?在基本控制器中设置的 Http 标头?
【发布时间】:2011-10-25 13:13:25
【问题描述】:

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

问题是,每当调用一个动作(我们所有其他控制器都从基本控制器继承)时,都会附加标头,因此标头会根据有多少其他动作(部分视图等)一遍又一遍地附加。作为初始请求的一部分被调用。

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

谁能建议一种更好的方法来将标头(一次)附加到 MVC 中的 GET 请求或解决这种情况?

【问题讨论】:

  • 我认为您不能在非集成模式的模块中添加标题。我认为。我的记忆很模糊:)
  • 我可以添加它们看起来不错 - 只是没有阅读代码中的 Headers 集合:S

标签: c# asp.net-mvc http


【解决方案1】:

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

会话可以通过 controllerContext.HttpContext.Session 访问

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 2023-04-08
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2010-09-09
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多