我的ASP.NET MVC 4应用程序(.NET 4.0)允许用户下订单。 HttpContext
中的当前用户ID和HttpContext.Session
中的其他信息用于多种用途,例如作为下订单的人。
我们正在通过Hangfire工作添加自动导入订单。 Hangfire作业没有HttpContext
,因此必须以其他方式提供用户ID。我们依赖注入Autofac。
问题:如何将当前用户作为依赖项注入,以便在通过...输入订单时
HttpContext
的ID 解决方案的想法:
用包装器界面替换HttpContext
,例如ICurrentContext
。一个实现返回HttpContext
的值,其他只使用静态值。
默认情况下,设置Autofac以返回基于HttpContext
的实施。
JobActivator
中,创建一个新的Autofac(child?)容器。将ICurrentContext
实现替换为返回作业名称的实现。这个解决方案让我很担心,因为它似乎require use of ThreadStatic,可能是not be OK in ASP.NET MVC上下文。有更好的方法吗?我不想将值作为方法参数传递,因为它们遍及整个应用程序。