web-dev-qa-db-ja.com

signalR-ユーザー名の取得

私はsignalrとasp.netMVC3を使用してサンプルチャットアプリケーションを構築しています。これが私のSignalハブがどのように見えるかです

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()メソッドでユーザー名を取得するにはどうすればよいですか?

29
user1625066

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);
}
25
nemesv