JSRuntime.InvokeAsync(«открыть», …) вызывает исключение TaskCanceledException

#blazor-server-side

#blazor-на стороне сервера

Вопрос:

В моем приложении на стороне сервера blazor я вызываю JSRuntime.InvokeAsync для открытия статического содержимого во всплывающем окне:

 await _jsRuntime.InvokeAsync<object>("open", "/help/help.html", "_blank");
  

Это работает, но через некоторое время (возможно, тайм-аут?) генерируется исключение TaskCanceledException. Я попытался вызвать InvokeVoidAsync, но эффект тот же. Я могу исправить это, перехватив и проигнорировав исключение или удалив «await», но я надеялся на более чистое решение, которое не выдает мне более строгих предупреждений.

Ответ №1:

Попробуйте указать CancellationToken как CancellationToken.None

await _jsRuntime.InvokeAsync<object>("open", System.Threading.CancellationToken.None, "/help/help.html", "_blank");

Токен отмены, сигнализирующий об отмене операции. Указание этого параметра отменит любые отмены по умолчанию, например, из-за тайм-аутов (DefaultAsyncTimeout) от применения.

Документация здесь

Ответ №2:

Чтобы устранить ошибку компилятора, используйте discard ‘_’:

 _ = _jsRuntime.InvokeAsync<object>("open", "/help/help.html", "_blank");