signalR - 获取用户名

时间:2012-08-26 13:39:35

标签: c# asp.net-mvc-3 signalr signalr-hub

我正在使用signalr和asp.net MVC3来构建示例聊天应用程序。这是我的信号器中心的样子

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,即使用户已经过身份验证。如何在Task Join()方法中获取用户名?

1 个答案:

答案 0 :(得分:24)

使用SignalR hubs时,您可以使用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);
}