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