ASP.NET MVC サーバーから Web クライアントにメッセージをプッシュするために SignalR を使用しています。
クライアントからの新しい接続が受け入れられたときに現在のクライアントの接続 ID を保存したいので、この特定のクライアントにデータを送信するときに、セッションからその接続 ID を取得してメッセージを送信できます。
ただし、OnConnected イベント ハンドラーでは、セッションは null です。その結果、connectionId をセッションに入れようとすると、コードで null 参照例外がスローされます。
これがコードスニペットです。
using Microsoft.AspNet.SignalR;
namespace TestSignalR
{
public class SignalRServerListener : PersistentConnection
{
protected override System.Threading.Tasks.Task OnConnected(
IRequest request,
string connectionId)
{
System.Diagnostics.Debugger.Break();
System.Diagnostics.Debug.
Print("Connection request received and accepted from
client with connection Id {0}", connectionId);
HttpContext.Current.Session["connectionId"] = connectionId;
return base.OnConnected(request, connectionId);
}
}
}