C# 信号器未连接方法中的HttpContext null
我正在使用signalr,但在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(); }
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
给定的值?