Имеет ли JsRuntime.InvokeAsync ограничение на размер возвращаемого значения?
Когда я пытаюсь вызвать функцию JavaScript из функции Blazor, соединение между моим серверным приложением Blazor и сервером разрывается, когда функция возвращает строку длиной более 32721 символа. Я'
На моей странице Razor я выполняю:
var data = await JsRuntime.InvokeAsync<string>("myfunction");
Функция JavaScript
myfunction
выглядит так:
function myfunction() {
return 'x'.repeat(32721);
}
Это работает, но когда я использую
32722
в качестве аргумента соединение разрывается, и я не знаю, почему и как это обойти.
Разделение строки на блоки длиной 1000 байт и возврат строки [] также не помогли.
Мне нужно вернуть около 200000 байт. Есть ли ограничения?
Просматривая сообщения веб-сокета, я вижу сообщение с 103 КБ, затем "JS.RenderBatch", "OnRenderCompleted" и, наконец, "Соединение закрыто с ошибкой", но я не могу найти ни одного сообщения об ошибке ни в одной консоли или журнале.
1 ответ
Это предел размера сообщения SignalR. См. Эту проблему на GitHub. Также в документации MS говорится о фрагментировании ответа для обхода ограничения размера сообщения.