gpt4 book ai didi

c# - SignalR - Websockets - 超出缓冲区长度

转载 作者:行者123 更新时间:2023-12-02 18:02:46 26 4
gpt4 key购买 nike

我配置了信号器诊断来帮助跟踪从客户端到服务器的未到达服务器的消息...我发现了以下异常详细信息,这几乎是我怀疑正在发生的情况。

    SignalR.Transports.WebSocketTransport Error: 0 : OnError(08af5ad0-d63d-42a3-8e00-3c109da3be6b, 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())

来自packages.config;这是 SignalR 版本详细信息

  <package id="Microsoft.AspNet.SignalR" version="1.1.2" targetFramework="net45" />
<package id="Microsoft.AspNet.SignalR.Core" version="1.1.2" targetFramework="net45" />
<package id="Microsoft.AspNet.SignalR.JS" version="1.1.2" targetFramework="net45" />
<package id="Microsoft.AspNet.SignalR.Owin" version="1.1.2" targetFramework="net45" />
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.2" targetFramework="net45" />

我使用 SignalR 作为 JavaScript 库测试框架。 SignalR 允许服务器调用客户端 js 库函数,其中涉及调用其他 Web 服务或建立与其他 Websocket 的连接以及处理异步提要。

我遇到了一个特定的 js lib 函数,它调用 json Web 服务,并且响应足够大,超出了 signalR 内部缓冲区。

那么,最大缓冲区长度是多少?可以配置吗?

如果没有; signalR 支持消息分块吗?或者我需要实现自己的解决方案吗?

最佳答案

一个老问题,但这篇文章(没有为我解决问题)是在我从这里找到可行的解决方案之前从谷歌的债务中产生的:https://stackoverflow.com/a/39854957/3535681

这里简要介绍一下上面链接中的答案对我有帮助的内容。

You can add a line that makes the message size 'infinite 'in your Startup.cs by setting the MaxIncomingWebSocketMessageSize to null:

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
GlobalHost.Configuration.MaxIncomingWebSocketMessageSize = null;
}
}

在我的例子中,导致 Buffer Lenght Exceede 错误的消息刚刚超过 64K,因此我仅将 MaxIncomingWebSocketMessageSize 加倍到 128K。

关于c# - SignalR - Websockets - 超出缓冲区长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20375044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com