我正在尝试注入IPrincipal
我的 SignalR 集线器构造函数。我已经看到并尝试了“ Selective IPrincipal Injection via StructureMap with SignalR ”中的解决方案,但不幸的是,这似乎不再适用于 SignalR 2.x。
在我的调试中,我发现有时,我的集线器构造函数是在堆栈中使用我的 OWIN 中间件调用的。在这种情况下,Thread.CurrentPrincipal
是正确的值。此外(并且令人惊讶地),HttpContext.Current
也不是空的。我的印象是这在 SignalR 中总是空的,我没有尝试使用它,但我只是在观察。这些有效的调用似乎来自调用堆栈中的管道。
其他时候,调用似乎来自线程池。在那些情况下,Thread.CurrentPrincipal
is a GenericPrincipal
, HttpContext.Current
is null (再次只是观察),我似乎无法静态地了解主体。但是,在枢纽内部,该this.Context.User
物业确实有正确的委托人。
我还能如何静态获取主体,以便可以将其注入集线器构造函数?