Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信号器未连接方法中的HttpContext null_C#_Model View Controller_Signalr_Signalr Hub - Fatal编程技术网

C# 信号器未连接方法中的HttpContext null

C# 信号器未连接方法中的HttpContext null,c#,model-view-controller,signalr,signalr-hub,C#,Model View Controller,Signalr,Signalr Hub,我正在使用signalr,但在Onconnected方法中遇到了一个问题。我需要urlreferer,但我得到了一个空指针异常 public override Task OnConnected() { string urlreferrer = HttpContext.Current.Request.UrlReferrer.ToString(); // Getting null exception here.. return base.OnConnected(); }

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

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

如何解决这个问题?

signar公开自己的
上下文
对象,它与
HttpContext
稍有不同,但它包含有关请求的大部分信息

要获得referer,您必须检查随请求一起传递的http头。像这样:

public override Tasks.Task OnConnected()
{
    var referrer = Context.Request.Headers["Referer"];
    return base.OnConnected();
}

如果有人仍在寻找答案,我发现我可以在SignalR JS中使用一个未记录的“qs”参数将数据传递到集线器。使用此方法,应该可以获取推荐人(在客户端)并将其发送到服务器进行进一步处理

在客户端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
        }
    }

代码中的哪个位置是
base
给定的值?