Имеет ли 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 говорится о фрагментировании ответа для обхода ограничения размера сообщения.

Другие вопросы по тегам