【问题标题】:How to get data from an IHttpModule to the ASP.NET MVC RequestContext?如何从 IHttpModule 获取数据到 ASP.NET MVC RequestContext?
【发布时间】:2009-01-17 01:54:33
【问题描述】:

我有一个自定义的 IHttpModule 进行身份验证(对 Facebook、Myspace 等)。它引发了一个可以在 HttpApplication 实例中处理的事件,其中包含有关用户的详细信息。这很像 FormsAuthenticationModule 引发的 OnAuthenticate 事件。

从 HttpApplication 类中,我应该将获得的这些信息放在哪里,以便它可用于 ASP.NET MVC 管道?我曾经把它放在 Context.Items 字典中。但似乎与(更友好的)HttpContextBase 我想把它放在那里以便于模拟/注入并且我没有在我的控制器中使用 HttpContext.Current。

那么,基本上,我如何最好地将数据从 IHttpModule 获取到 MVC 上下文中?快速浏览一下,我能想到的最好方法是创建一个自定义 IControllerFactory 以从 HttpContext 中提取数据并将其添加到 RequestContext。我回答了我自己的问题吗?有没有侵入性较小的方式(比如我可以处理的事件)?

【问题讨论】:

    标签: asp.net-mvc ihttpmodule


    【解决方案1】:

    我的猜测是您的模块在路由之前运行。如果是这样,那么直接将其添加到RequestContext还为时过早。

    我会尝试将它添加到 HttpContext.Current.Items。路由将使用 HttpContextBase 包装该 HttpContext。然后,您应该可以通过 RequestContext.HttpContext.Items 从任何地方访问它。

    【讨论】:

    • 我明白了,所以项目从 HttpContext 复制到 HttpContextBase。很高兴知道。
    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多