structureMap被配置为在要求任何ASP.NET MVC Web请求请求IPrincipal
时注入HttpContext.Current.User
,例如:
For<IPrincipal>().Use(x => HttpContext.Current.User);
但是,当我的SignalR Hub要求提供取决于IPrincipal
的服务时,注射会失败,因为HttpContext.Current
为null。相反,SignalR已经具有HubCallerContext
属性,该属性通过Context.User
暴露了当前的IPrincipal
。
如何配置structuremap以始终将有效的IPrincipal
注入我的SignalR Hub依赖的服务?
只要这样做:
For<IPrincipal>().Use(x => Thread.CurrentPrincipal);