Подтвердить что ты не робот

SignalR - получение имени пользователя

Я использую 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 является нулевым, даже если пользователь уже прошел аутентификацию. Как я могу получить имя пользователя в моем методе Join()?

4b9b3361

Ответ 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);
}