.net 从请求作用域类访问HttpContext
我有一个类,继承自IDependency。从我的类访问HttpContext的最佳方式是什么?我希望在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对象访问,因此,您将无法访问构造函数中的那些。最好的方法是在您想要使用上下文对象时访问它-不要更早-尤其是构造函数内部的
我试图将IWorkContextAccessor的依赖项注入添加到我的类中,并从构造函数访问它,但是GetContext()返回null。在创建IoC容器对象之后,当前的HttpContext可通过IWorkContextAccessor对象访问,因此,您将无法访问构造函数中的那些。最好的方法是在您想要使用上下文对象时访问它-不要更早-尤其是构造函数内部的而不是,因为构造函数很早就被Autofac调用了 您还可以注入IOrchardServices对象(我们称之为“服务”),然后使用services.WorkContext.HttpContext对象 你能提供一些你想要实现的更详细的信息吗?你为什么这么早就想访问它?不能重写它以便以后使用上下文对象吗(例如,在某些方法调用中)
HTH让我来解释一下我想做什么。我正在自定义DefaultCultureManager类。其目的是将区域性选择逻辑从GetCurrentCulture方法移动到另一个私有方法,当HttpContext可用时,该方法将只被调用一次。原因是GetCurrentCulture方法被调用太频繁。我寻找了某种组件,它聚合了应用程序级事件,如BeginRequest,可以从DefaultCultureManager访问,但没有找到任何内容。因此,您希望在每次调用GetCurrentCulture方法时将检索当前区域性对性能的影响降至最低?我想最好的选择(就清晰性和最佳实践而言)是使用缓存(通过ICacheManager)。第一次调用该方法时,将在后续调用中创建和检索缓存。顺便说一句,连接到“生命周期”事件并不是一个简单的方法,但我想团队会致力于这一点(这种特性的必要性已经被多次提到)。