Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
.net 从请求作用域类访问HttpContext_.net_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Orchardcms - Fatal编程技术网

.net 从请求作用域类访问HttpContext

.net 从请求作用域类访问HttpContext,.net,asp.net,asp.net-mvc,asp.net-mvc-3,orchardcms,.net,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Orchardcms,我有一个类,继承自IDependency。从我的类访问HttpContext的最佳方式是什么?我希望在HttpContext可用后尽早访问它 我试图将IWorkContextAccessor的依赖项注入添加到我的类中,并从构造函数访问它,但是GetContext()返回null。在创建IoC容器对象之后,当前的HttpContext可通过IWorkContextAccessor对象访问,因此,您将无法访问构造函数中的那些。最好的方法是在您想要使用上下文对象时访问它-不要更早-尤其是构造函数内部的

我有一个类,继承自IDependency。从我的类访问HttpContext的最佳方式是什么?我希望在HttpContext可用后尽早访问它


我试图将IWorkContextAccessor的依赖项注入添加到我的类中,并从构造函数访问它,但是GetContext()返回null

在创建IoC容器对象之后,当前的HttpContext可通过IWorkContextAccessor对象访问,因此,您将无法访问构造函数中的那些。最好的方法是在您想要使用上下文对象时访问它-不要更早-尤其是构造函数内部的而不是,因为构造函数很早就被Autofac调用了

您还可以注入IOrchardServices对象(我们称之为“服务”),然后使用services.WorkContext.HttpContext对象

你能提供一些你想要实现的更详细的信息吗?你为什么这么早就想访问它?不能重写它以便以后使用上下文对象吗(例如,在某些方法调用中)


HTH

让我来解释一下我想做什么。我正在自定义DefaultCultureManager类。其目的是将区域性选择逻辑从GetCurrentCulture方法移动到另一个私有方法,当HttpContext可用时,该方法将只被调用一次。原因是GetCurrentCulture方法被调用太频繁。我寻找了某种组件,它聚合了应用程序级事件,如BeginRequest,可以从DefaultCultureManager访问,但没有找到任何内容。因此,您希望在每次调用GetCurrentCulture方法时将检索当前区域性对性能的影响降至最低?我想最好的选择(就清晰性和最佳实践而言)是使用缓存(通过ICacheManager)。第一次调用该方法时,将在后续调用中创建和检索缓存。顺便说一句,连接到“生命周期”事件并不是一个简单的方法,但我想团队会致力于这一点(这种特性的必要性已经被多次提到)。