Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将数据从IHTTP模块获取到ASP.NET MVC RequestContext?_Asp.net Mvc_Ihttpmodule - Fatal编程技术网

Asp.net mvc 如何将数据从IHTTP模块获取到ASP.NET MVC RequestContext?

Asp.net mvc 如何将数据从IHTTP模块获取到ASP.NET MVC RequestContext?,asp.net-mvc,ihttpmodule,Asp.net Mvc,Ihttpmodule,我有一个自定义IHTTP模块,可以进行身份验证(到Facebook、Myspace等)。它会引发一个事件,可以在HttpApplication实例中处理该事件,并提供有关用户的详细信息。这很像FormsAuthenticationModule引发的OnAuthentication事件 从HttpApplication类中,我应该将我获得的信息放在哪里,以便它可用于ASP.NET MVC管道?我过去常把它放在上下文中。项目字典。但是,我想用(更友好的)HttpContextBase将其放在那里,这

我有一个自定义IHTTP模块,可以进行身份验证(到Facebook、Myspace等)。它会引发一个事件,可以在HttpApplication实例中处理该事件,并提供有关用户的详细信息。这很像FormsAuthenticationModule引发的OnAuthentication事件

从HttpApplication类中,我应该将我获得的信息放在哪里,以便它可用于ASP.NET MVC管道?我过去常把它放在上下文中。项目字典。但是,我想用(更友好的)HttpContextBase将其放在那里,这样就很容易模拟/注入,而且我的控制器中没有使用HttpContext.Current


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

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


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

我明白了,因此项目将从HttpContext复制到HttpContextBase。很高兴知道。