我正在使用signalr,但在Onconnected
方法中面临问题。我需要urlreferrer
,但我得到一个空指针异常。
public override Task OnConnected()
{
string urlreferrer = HttpContext.Current.Request.UrlReferrer.ToString();
// Getting null exception here..
return base.OnConnected();
}
我该如何解决这个问题?
答案 0 :(得分:2)
SignalR公开自己的Context
对象,它与HttpContext
略有不同,但它包含大部分有关请求的信息。
要获取引荐来源,您必须检查随请求传递的http标头。像这样:
public override Tasks.Task OnConnected()
{
var referrer = Context.Request.Headers["Referer"];
return base.OnConnected();
}
答案 1 :(得分:1)
关于任何人仍在寻找答案的机会,我发现我能够在SignalR JS中使用未记录的'qs'参数将数据传递到集线器。使用此方法,应该可以获取引用者(在客户端)并将其发送到服务器以进行进一步处理。
在Client JS中:
$.connection.hub.qs = "referrer=" + encodeURIComponent(location.href);
$.connection.hub.start().done(function () {
//initialization code
});
在服务器代码中:
public override Task OnConnected()
{
var str = Context.Request.QueryString["referrer"];
if (!string.IsNullOrWhiteSpace(str))
{
//do stuff
}
}
HTH!