signalR - 获取用户名(signalR - getting username)

2019-06-27 09:49发布

我使用signalr和asp.net MVC3构建一个示例聊天应用。 这里是我的signalr毂看起来像

public class MyHub:Hub,IDisconnect
{
 public Task Join()
 {
  string username = HttpContext.Current.User.Identity.Name;
  //find group based on username
  string group = getGroup(username)
  return Groups.Add(Context.ConnectionId, group);
 }

 public void doStuff()
 {
  string group = getGroup();
  Clients[group].doStuffOnBrowser();
 }
}

我的问题是我的应用程序崩溃的页面加载时。 与调试器逐句通过,我发现HttpContext.Current.User.Identity.Name为null,即使用户已经被认证。 我怎样才能得到我的任务的用户名join()方法?

Answer 1:

当使用SignalR集线器可以使用HubCallerContext.User属性:

获取为初始HTTP请求的一部分的用户。

因此,与尝试:

public Task Join()
{
    string username = Context.User.Identity.Name;
    //find group based on username
    string group = getGroup(username)
    return Groups.Add(Context.ConnectionId, group);
}


文章来源: signalR - getting username