JsRuntime.InvokeAsync是否有返回值大小限制?

问题描述

当我尝试从Blazor函数调用JavaScript函数时,当函数返回的字符串长于32,721个字符时,服务器端Blazor App与服务器之间的连接断开。我

在我的Razor页面中,执行:

var data = await JsRuntime.InvokeAsync<string>("myfunction");

JavaScript函数myfunction如下所示:

function myfunction() {
  return 'x'.repeat(32721);
}

这可行,但是当我使用32722作为参数时,连接断开,我不知道为什么以及如何解决此问题。

将字符串拆分为1000字节长的小块并返回字符串[]也不起作用。

我需要返回大约200.000字节。有什么限制吗?

观看websocket的消息,我可以看到消息为103kB,然后看到“ JS.RenderBatch”,“ OnRenderCompleted”,最后是“连接因错误关闭”,但是在任何控制台或日志中都找不到任何错误消息。

解决方法

这是SignalR消息的大小限制。参见this GitHub issue。还this from the MS docs上对响应进行分块以解决消息大小限制。