问题描述
当我尝试从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上对响应进行分块以解决消息大小限制。