簡體   English   中英

在IIS中部署帶有ARR的signalR(應用程序請求路由)

[英]Deploying signalR with ARR in IIS (Application Request Routing )

我們在應用程序中使用SignalR。 異常類型為:

集線器服務器無法啟動。 消息:發生一個或多個錯誤。 堆棧跟蹤:位於System.Threading.Tasks.Task.Wait處的System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)(位於ProjectName.TryStartHub處的System.Threading.Tasks.Task.Wait()處的Int32 millisecondsTimeout,CancellationToken cancellingToken) (對象來源,ElapsedEventArgs e)

當我們在系統中本地測試時沒有錯誤。 當我們使用ARR部署它時。 那么就有一個例外是僅僅因為ARR。 同時我們也刪除了ARR,然后嘗試了它。 但是它不適用於ARR。

代碼正確,但是SignalR和ARR存在配置問題。

    public void InitializeHub()
    {
        appLog.Write("Initializing Hub Server");
        IHubProxy _hub;
        var querystringData = new Dictionary<string, string>();
        querystringData.Add("Key", "key1");
        hypervisorConnection = new HubConnection("url", querystringData);
        _hub = hConnection.CreateHubProxy("Hub");
        _hub.On<HypervisorCommand>("ExecuteHypervisorCommand", x => ExecuteHypervisorCommand(x));

        #region Initialize Hub Timer
        hHubTimer = new System.Timers.Timer();
        hHubTimer.Elapsed += new ElapsedEventHandler(TryStartHub);
        hHubTimer.AutoReset = false;
        hHubTimer.Interval = 1000;
        hHubTimer.Enabled = true;
        hHubTimer.Start();
        #endregion
    }

    private void TryStartHub(object source, ElapsedEventArgs e)
    {
        try
        {
            if (hConnection.State != ConnectionState.Connected)
            {
                hConnection.Start().Wait();
                appLog.Write("Hypervisor Hub server started.");
            }
        }
        catch (Exception ex)
        {
            appLog.Write("Hub Server was unable to start. Message:" + ex.Message + "\n Stack trace:" + ex.StackTrace);
        }
        hHubTimer.Interval = 30000;
        hHubTimer.Start();
    }

所以,終於我們解決了這個問題。 IIS負載平衡器ARR(應用程序請求路由)的配置中存在問題。

1.首先,從IIS菜單中選擇ARR。 在此處輸入圖片說明 2.轉到Proxy並將響應緩沖區閾值設置為0。為什么我們必須將響應緩沖區大小設置為0? 這是詳細說明:默認情況下,此設置為256kb,這意味着它將緩沖響應,直到響應達到該數量為止。 通過將此設置為0,ARR將不再緩沖並且SignlR將正常運行。

在此處輸入圖片說明

3.然后轉到負載平衡器,並將負載平衡器算法從“循環”更改為“服務器變量哈希”。 現在,SignalR客戶端每次都會連接到集線器。

暫無
暫無

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

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