33

私はsignalrとasp.netMVC3を使用してサンプルチャットアプリケーションを構築しています。これが私のSignalHubの外観です

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

4

1 に答える 1

34

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);
}
于 2012-08-26T13:44:32.920 に答える