Selective IPrincipal Injection via StructureMap with SignalR
-
14-07-2021 - |
Question
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);
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
.
How do I configure StructureMap to always inject a valid IPrincipal
into the services my SignalR hub relies on?
Solution
Just do this:
For<IPrincipal>().Use(x => Thread.CurrentPrincipal);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow