簡體   English   中英

Signalr OnConnected方法中的HttpContext null

[英]HttpContext null in Signalr OnConnected method

我正在使用signalr,但在Onconnected方法中遇到問題。 我需要urlreferrer ,但我得到一個空指針異常。

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

我怎么解決這個問題?

SignalR公開自己的Context對象,它與HttpContext有點不同,但它包含有關請求的大部分信息。

要獲取引薦來源,您必須檢查隨請求傳遞的http標頭。 像這樣:

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

關於任何人仍在尋找答案的機會,我發現我能夠在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!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM