.net SignalR System.InvalidOperationException:超出缓冲区长度

.net SignalR System.InvalidOperationException:超出缓冲区长度,.net,websocket,signalr,.net-4.5,signalr.client,.net,Websocket,Signalr,.net 4.5,Signalr.client,我有一个.NET客户端在中心上调用一个方法,如下所示: var competition=hubProxy.Invoke(“GetCompetition”,“女王决赛2013”)。结果; 在Windows 8上调试时,出现以下错误: 20:23:25.0926734 - null - ChangeState(Disconnected, Connecting) 20:23:25.3748631 - ... - WS: ws://localhost:59570/signalr/connect?tra

我有一个.NET客户端在中心上调用一个方法,如下所示:

var competition=hubProxy.Invoke(“GetCompetition”,“女王决赛2013”)。结果;
在Windows 8上调试时,出现以下错误:

20:23:25.0926734 - null - ChangeState(Disconnected, Connecting)
20:23:25.3748631 - ... - WS: ws://localhost:59570/signalr/connect?transport=webSockets&connectionToken=-Tp4LiB-1w8TjNuw0ilbeMFjw_B8Vl1c31Oni72nbXazWo6qHBSJCRFJU6YD4wJo9dYZ_mb0vNez2hD8JllF0SUXzkhrN4ejcuO1_gBrFrcsK02xJLBnV_z7d774EFlw0&connectionData=[{"Name":"QueensFinalHub"}]
20:23:25.3968761 - ... - ChangeState(Connecting, Connected)
20:23:34.2938036 - ... - WS: OnMessage({})
20:23:35.5546436 - ... - OnError(System.InvalidOperationException: Buffer length exceeded
   at Microsoft.AspNet.SignalR.Infrastructure.ByteBuffer.Append(Byte[] segment)
   at Microsoft.AspNet.SignalR.WebSockets.WebSocketMessageReader.<ReadMessageAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.<ProcessWebSocketRequestAsync>d__8.MoveNext())
20:23:35.5576456 - ... - WS: OnClose(False)
20:23:35.5596469 - ... - ChangeState(Connected, Reconnecting)
20:23:35.5616483 - ... - WS: ws://localhost:59570/signalr/reconnect?transport=webSockets&connectionToken=-Tp4LiB-1w8TjNuw0ilbeMFjw_B8Vl1c31Oni72nbXazWo6qHBSJCRFJU6YD4wJo9dYZ_mb0vNez2hD8JllF0SUXzkhrN4ejcuO1_gBrFrcsK02xJLBnV_z7d774EFlw0&connectionData=[{"Name":"QueensFinalHub"}]
20:23:35.5766587 - ... - ChangeState(Reconnecting, Connected)
20:23:44.3054789 - ... - WS: OnMessage({})
20:23:25.0926734-空-更改状态(断开、连接)
20:23:25.3748631 - ... - WS:WS://localhost:59570/signal/connect?transport=webSockets&connectionToken=-Tp4LiB-1w8TjNuw0ilbeMFjw\u B8Vl1c31Oni72nbXazWo6qHBSJCRFJU6YD4wJo9dYZ\u mb0vNez2hD8JllF0SUXzkhrN4ejcuO1\u gBrFrcsK02xJLBnV\u z7d774EFlw0&connectionData=[{“名称”:“QueensFinalHub”}]
20:23:25.3968761 - ... - 变更状态(正在连接,已连接)
20:23:34.2938036 - ... - WS:OnMessage({})
20:23:35.5546436 - ... - OneError(System.InvalidOperationException:超出缓冲区长度
位于Microsoft.AspNet.signal.Infrastructure.ByteBuffer.Append(字节[]段)
在Microsoft.AspNet.signal.WebSockets.WebSocketMessageReader.d_u0.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()中
在Microsoft.AspNet.signal.WebSockets.WebSocketHandler.d_u8.MoveNext()中
20:23:35.5576456 - ... - WS:OnClose(False)
20:23:35.5596469 - ... - 更改状态(已连接,正在重新连接)
20:23:35.5616483 - ... - WS:WS://localhost:59570/signal/reconnect?transport=webSockets&connectionToken=-Tp4LiB-1w8TjNuw0ilbeMFjw\u B8Vl1c31Oni72nbXazWo6qHBSJCRFJU6YD4wJo9dYZ\u mb0vNez2hD8JllF0SUXzkhrN4ejcuO1\u gBrFrcsK02xJLBnV\u z7d774EFlw0&connectionData=[{“名称”:“QueensFinalHub”}]
20:23:35.5766587 - ... - 更改状态(重新连接,已连接)
20:23:44.3054789 - ... - WS:OnMessage({})
响应数据非常大,但在Windows7上调试时(我相信连接使用服务器端事件),我没有发现这个错误


是什么导致了这种情况?

Signal对消息大小有合理的默认限制,因为它试图成为实时消息传递框架,而不是web服务框架。对于,这是一个只读属性


似乎您正在尝试使用SignalR来处理一个基本的HTTP GET请求。您是否考虑过对ASP.NET WebAPI web服务使用AJAX来进行此类数据交换?

Signal对消息大小有合理的默认限制,因为它试图成为实时消息传递框架,而不是web服务框架。对于,这是一个只读属性


似乎您正在尝试使用SignalR来处理一个基本的HTTP GET请求。您是否考虑过只对ASP.NET WebAPI web服务使用AJAX来进行此类数据交换?

这实际上是一个正在修复的错误。若要解决此问题,请将传输更改为服务器发送的事件。@dfowler如何执行此操作?这实际上是一个正在修复的错误。若要解决此问题,请将传输更改为服务器发送的事件。@dfowler如何执行此操作?