在Windows10机器上使用SignalR和IIS时,我遇到了一个问题。问题是IIS only allows for 10 concurrent connections。当到达第10个连接时,客户端HubConnection将长时间处于连接状态。
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不接受连接请求?
发布于 2020-01-09 09:34:42
根据您的描述,我建议您可以尝试编写代码来监控连接时间,如果时间已经超过30秒,您可以直接停止连接到信号服务器并显示错误消息。
此外,IIS的连接限制仅在windows10上发生。如果您使用的是windows服务器,则对IIS连接没有限制。
https://stackoverflow.com/questions/59641430
复制相似问题