在调试窗口中显示异常,如下所示:
vstest.executionengine.x86.exe错误:0:关闭websocket时出错:System.Net.WebSockets.WebSocketException(0x80004005):发生内部WebSocket错误。有关更多详细信息,请参见innerException(如果存在)。 ---> System.Net.Sockets.SocketException(0x80004005):现有连接被远程主机强行关闭 在System.Net.WebSockets.WebSocketConnectionStream.WebSocketConnection.WriteAsync处(字节[]缓冲区,Int32偏移量,Int32计数,CancellationToken cancelledToken)
还有更多,我只是剪下来。
我要做的是为SignalR服务器和客户端编写集成测试。
这里有2个简单的测试用例:
[TestMethod]
public void It_Should_Allow_Register()
{
using (var server = WebApp.Start<Startup>("http://+:61744"))
{
var client = GetConnectedClient();
Assert.IsTrue(client.IsConnected);
DisposeClients(client);
}
}
[TestMethod]
public void It_Should_Allow_MultipleClients()
{
using (var server = WebApp.Start<Startup>("http://+:61744"))
{
var client1 = GetConnectedClient();
Assert.IsTrue(client1.IsConnected);
var client2 = GetConnectedClient();
Assert.IsTrue(client2.IsConnected);
DisposeClients(client1, client2);
}
}
我还有其他测试用例,但想法是,每个测试都会启动内存中的自托管Owin服务器,并创建一个或多个连接到它的客户端,然后在业务逻辑之后安全地断开所有客户端的连接。被执行。
不幸的是,如果我一次运行一个测试用例,它可以正常工作。 但是,如果我将它们全部一起运行,则会打印出令人讨厌的WebSocketException。
测试用例似乎执行得很好。我在调试中打印出请求和响应(调用SignalR服务器功能时)。一切都很好,例外是调试跟踪中的例外。
我发现了这篇文章: SignalR Websocket Exception when closing client
所以我无故添加了
Connection.Stop(TimeSpan.FromSeconds(3000));
Connection是一个HubConnection。
还是一样。
老实说,如果我确定测试中的所有业务逻辑都已执行,我是否还要关心?