我有一个应用程序,使用c#编写,基于Asp.Net MVC 5框架。
我正在使用SignalR 2.2.2创建WebSocket通信,在服务器和浏览器之间推送消息。
然而,我需要能够访问已登录用户的
通常,我会这样访问身份声明。
然而,这一行
我猜测 SignalR 创建了一个同步连接,这就是为什么
我也尝试使用
如何在我的Hub中正确访问用户声明?
由于我使用的是Framework 4.5.1,因此我将以下密钥添加到Web.config中的appSettings中。
我正在使用SignalR 2.2.2创建WebSocket通信,在服务器和浏览器之间推送消息。
然而,我需要能够访问已登录用户的
ClaimsIdentity
对象,以便确定要播客的消息。通常,我会这样访问身份声明。
IPrincipal user = System.Web.HttpContext.Current.User
IIdentity identity = user.Identity;
var claims = (IEnumerable<Claim>)identity.Claims;
然而,这一行
System.Web.HttpContext.Current
返回 null;这阻止了我获取当前已登录用户的操作。我猜测 SignalR 创建了一个同步连接,这就是为什么
System.Web.HttpContext.Current
为空的原因。我也尝试使用
HubCallerContext
,如 SO Question 所建议的,但 Context
对象也为空。System.Web.HttpContextBase httpContext = Context.Request.GetHttpContext();
如何在我的Hub中正确访问用户声明?
由于我使用的是Framework 4.5.1,因此我将以下密钥添加到Web.config中的appSettings中。
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
Context
对象本身为空。 - Junior