HttpContext null in Signalr OnConnected method
我正在使用信号器,但在
1 2 3 4 5 6 | public override Task OnConnected() { string urlreferrer = HttpContext.Current.Request.UrlReferrer.ToString(); // Getting null exception here.. return base.OnConnected(); } |
我该如何解决这个问题?
SignalR 暴露了自己的
要获得referrer,您必须检查随请求一起传递的http 标头。像这样:
1 2 3 4 5 | public override Tasks.Task OnConnected() { var referrer = Context.Request.Headers["Referer"]; return base.OnConnected(); } |
如果有人仍在寻找此问题的答案,我发现我能够在 SignalR JS 中使用未记录的 \\'qs\\' 参数将数据传递到集线器。使用这种方法,应该可以获取referrer(在客户端)并将其发送到服务器进行进一步处理。
在客户端 JS 中:
1 2 3 4 | $.connection.hub.qs ="referrer=" + encodeURIComponent(location.href); $.connection.hub.start().done(function () { //initialization code }); |
并在服务器代码中:
1 2 3 4 5 6 7 8 9 | public override Task OnConnected() { var str = Context.Request.QueryString["referrer"]; if (!string.IsNullOrWhiteSpace(str)) { //do stuff } } |
HTH!