SignalR остается в состоянии подключения, когда IIS не отвечает на запрос подключения - PullRequest
0 голосов
/ 08 января 2020

У меня проблема при использовании SignalR и IIS на моей Windows 10 машине. Проблема в том, что IIS допускает только 10 одновременных подключений . Когда будет достигнуто 10-е соединение, HubConnection на стороне клиента будет оставаться в состоянии Connecting в течение длительного времени.

using Microsoft.AspNet.SignalR.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {

        static int usedConnections = 0;

        static  void Main(string[] args)
        {
            Foo();

            while (true) { }
        }


        static async void Foo()
        {
            for(int i = 0; i < 15; i++)
            {
                await SetupSignalR();
            }
        }

        static async Task SetupSignalR()
        {
            //Set connection
            var hub = new HubConnection("http://MyComputer/MyIISApp");

            hub.TraceLevel = TraceLevels.All;
            hub.TraceWriter = Console.Out;

            //Make proxy to hub based on hub name on server
            var myHub = hub.CreateHubProxy("MyIISHub");
            //Start connection
            hub.TransportConnectTimeout = TimeSpan.FromSeconds(5);

            await hub.Start();
            usedConnections++;
            Console.WriteLine($"Used Conenctions: {usedConnections}");

            return;
        }
    }
}

Через некоторое время я хотел бы показать пользователю сообщение о том, что HubConnection не может подключиться к серверу, но я не могу понять, как установить тайм-аут или вызвать событие. Что я могу сделать, чтобы уведомить пользователя о том, что IIS не принимает запрос на подключение?

1 Ответ

0 голосов
/ 09 января 2020

Согласно вашему описанию, я предлагаю вам попытаться написать коды для контроля времени соединения, если время превысило 30 секунд, вы можете напрямую прекратить соединение с сервером сигнализатора и показать сообщение об ошибке.

Кроме того, предел соединения для IIS установлен только на windows10. Если вы использовали сервер windows, ограничения на подключение IIS нет.

...