【问题标题】:Selective IPrincipal Injection via StructureMap with SignalR通过带有 SignalR 的 StructureMap 的选择性 IPrincipal 注入
【发布时间】:2012-10-26 09:52:12
【问题描述】:

StructureMap 配置为在任何 ASP.NET MVC Web 请求请求 IPrincipal 时注入 HttpContext.Current.User,如下所示:

For<IPrincipal>().Use(x => HttpContext.Current.User);

但是当我的 SignalR 集线器请求依赖于 IPrincipal 的服务时,注入失败,因为 HttpContext.Current 为空。相反,SignalR 已经有一个 HubCallerContext 属性,它通过 Context.User 公开当前的 IPrincipal

如何配置 StructureMap 以始终将有效的IPrincipal 注入到我的 SignalR 集线器所依赖的服务中?

【问题讨论】:

    标签: asp.net-mvc dependency-injection structuremap signalr iprincipal


    【解决方案1】:

    这样做:

    For<IPrincipal>().Use(x => Thread.CurrentPrincipal);
    

    【讨论】:

    • 如何从集线器外部检索当前的HubCallerContext? AFAIK,没有像 HttpContext 那样的静态全局 HubCallerContext.Current
    • 啊好吧..你不能使用Thread.CurrentThread.CurrentPrincipal
    • 要去试试Thread.CurrentPrincipal(用于非静态上下文)。
    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多