Signalr OnConnected方法中的HttpContext null

时间:2014-02-26 12:09:05

标签: c# model-view-controller signalr signalr-hub

我正在使用signalr,但在Onconnected方法中面临问题。我需要urlreferrer,但我得到一个空指针异常。

public override Task OnConnected()
{
    string urlreferrer = HttpContext.Current.Request.UrlReferrer.ToString(); 
    // Getting null exception here..
    return base.OnConnected();
}

我该如何解决这个问题?

2 个答案:

答案 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!