我有一个带有库的服务器端 Blazor.NET 应用程序(dotnet core 3.1): ProtectedBrowserStorage ( https://www.nuget.org/packages/Microsoft.AspNetCore.ProtectedBrowserStorage ) 用于客户端浏览器中的加密存储
有时我的日志文件中会出现如下错误:
2020-04-01 14:05:17.4809 Error System.Threading.Tasks.TaskCanceledException: A task was canceled.
at Microsoft.JSInterop.JSRuntime.InvokeWithDefaultCancellation[T](String identifier, Object[] args)
at Microsoft.AspNetCore.ProtectedBrowserStorage.ProtectedBrowserStorage.GetAsync[T](String purpose, String key)
at PegasusV6.LocalStorageService.LoadBasket(MenuDTO menu) in LocalStorageService.cs:line 40 A task was canceled.
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道是什么导致了 JavaScript 调用中的这个错误。
是否有可以修复此类错误的服务器限制?
或者是客户端用户可能没有良好的互联网速度/连接,这是服务器端 Blazor 非常需要的?
希望有人能给我一个提示或任何可以改进它的东西。这是调用的 C# 函数:
public async Task LoadBasket(MenuDTO menu)
{
try
{
AppState.BasketData = await ProtectedLocalStore.GetAsync<BasketState>($"Basket_{My.StoreId}") ?? new BasketState();
}
catch (Exception ex)
{
My.Log.Error(ex);
AppState.BasketData = new BasketState();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
小智 5
传入中心消息的大小有一个默认最大值。我第一次遇到这个问题时,我尝试更改blazor hub的ApplicationMaxBufferSize和TransportMaxBufferSize,但没有解决问题。
而是添加 SignalR 服务并设置 MaximumReceiveMessageSize。
services.AddSignalR(e => {
e.MaximumReceiveMessageSize = 1000;
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
我有时会在 JsInterop 调用没有返回值的 javascript 方法时遇到该错误。我了解到,最好始终返回一个值,即使对于业务逻辑来说不是必需的。
在 blazor 页面中看起来像这样:
await JSRuntime.InvokeAsync<bool>("exampleJsMethod");
Run Code Online (Sandbox Code Playgroud)
然后在JS中:
window.exampleJsMethod = () => {
//do something
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2564 次 |
| 最近记录: |