OWIN自托管主机上的SignalR出现问题

时间:2018-07-11 13:46:09

标签: signalr signalr-hub signalr.client

我有一个signalR集线器的实现,并且编写了许多集成测试,其中在每个测试中,我创建一个托管在OWIN上的signalR集线器的实例,并测试该集线器。如果作为独立测试运行,则每个测试都可以正常工作。如果我一起运行所有测试,则只有第一个有效,其余的都将失败。我举了一个简单的例子来演示这个问题:

使用的大量软件包:

Microsoft.AspNet.SignalR.Client版本=“ 2.3.0”

Microsoft.AspNet.SignalR.Core版本=“ 2.3.0”

Microsoft.Owin版本=“ 4.0.0”

Microsoft.Owin.Host.HttpListener version =“ 4.0.0”

Microsoft.Owin.Hosting版本=“ 4.0.0”

Microsoft.Owin.Security版本=“ 4.0.0”

Newtonsoft.Json版本=“ 11.0.2”

测试代码

class Program
{
    static void Main(string[] args)
    {
        string baseAddress = "http://localhost:8088/";

        using (WebApp.Start<Startup>(baseAddress))
        {
            var connection = new HubConnection(baseAddress);
            IHubProxy hub = connection.CreateHubProxy("TestHub");
            connection.Start().Wait();
        }

        using (WebApp.Start<Startup>(baseAddress))
        {
            var connection = new HubConnection(baseAddress);
            IHubProxy hub = connection.CreateHubProxy("TestHub");
            connection.Start().Wait();
        }
    }

    public class TestHub : Hub
    {
        public TestHub() { }
    }

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

预期的行为

运行上面的代码,我希望创建SignalR服务器,客户端进行连接,配置信号处理程序服务器,第二次创建signalR服务器,客户端进行连接并配置信号处理程序服务器。

实际行为-引发以下异常

System.AggregateException
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
StackTrace:
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at SignalRTests.Program.Main(String[] args) in C:\Projects\SignalRTests\SignalRTests\Program.cs:line 25
Inner Exception 1:
TimeoutException: Transport timed out trying to connect

0 个答案:

没有答案