通过选择性StructureMap注入的IPrincipal与SignalR [英] Selective IPrincipal Injection via StructureMap with SignalR
问题描述
StructureMap被配置成喷射 HttpContext.Current.User
当的IPrincipal
请求任何ASP.NET MVC Web请求,就像这样:
StructureMap is configured to inject HttpContext.Current.User
when an IPrincipal
is requested for any ASP.NET MVC web request, like so:
For<IPrincipal>().Use(x => HttpContext.Current.User);
但是,当我SignalR中心要求依赖于一个的IPrincipal
,注射服务失败,因为 HttpContext.Current
为空。相反,SignalR已具有通过公开电流
的IPrincipal
Context.User <α HubCallerContext
属性/ code>。
But when my SignalR hub asks for a service that depends on an IPrincipal
, injection fails because HttpContext.Current
is null. Instead, SignalR already has a HubCallerContext
property that exposes the current IPrincipal
via Context.User
.
我如何配置StructureMap总是注入一个有效的的IPrincipal
进入我的SignalR枢纽依靠服务?
How do I configure StructureMap to always inject a valid IPrincipal
into the services my SignalR hub relies on?
推荐答案
只要做到这一点:
For<IPrincipal>().Use(x => Thread.CurrentPrincipal);
这篇关于通过选择性StructureMap注入的IPrincipal与SignalR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!