如何设置或覆盖 Blazor 默认中心选项 .NET8

问题描述 投票:0回答:1
有谁知道如何覆盖或设置 .NET 8 中的默认集线器选项?查看 MS 文档,似乎我应该能够根据

ASP.NET Core Blazor SignalR 指南Blazor hub 选项,在 program.cs 中的 app.MapRazorComponents 之后添加带有选项的 app.MapBlazorHub() 行 。当我尝试添加如下内容时

app.MapBlazorHub(options => { options.TransportSendTimeout = TimeSpan.FromMinutes(5); });
我收到以下有关多个端点匹配的错误。

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware:错误:执行请求时发生未处理的异常。

Microsoft.AspNetCore.Routing.Matching.AmbigouslyMatchException:请求匹配多个终结点。比赛:

Blazor 初始化器

在 Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ReportAmbiguity(Span

1 candidateState) at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ProcessFinalCandidates(HttpContext httpContext, Span

1候选状态)
在 Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.Select(HttpContext httpContext,Span`1候选状态)
在 Microsoft.AspNetCore.Routing.Matching.DfaMatcher.MatchAsync(HttpContext httpContext)
在 Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)
在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext 上下文)

有谁知道如何在 .NET 8 中覆盖这些选项或默认集线器 _blazor 的 HttpConnectionDispatcherOptions ?

我可以通过创建一个新的空白 .NET 8 项目并添加上述行来重现这一点。

我问这个问题是因为我在 .NET6 项目中使用 app.UseEndpoints 覆盖了这些选项,没有任何问题

app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); endpoints.MapControllers(); endpoints.MapBlazorHub(options => { options.TransportSendTimeout = TimeSpan.FromMinutes(5); }); endpoints.MapFallbackToPage("/_Host"); });
我尝试使用之前在 .NET6 中使用的相同方法,但遇到了我在帖子中描述的端点不明确的错误

blazor signalr .net-8.0
1个回答
0
投票
在 dotnet 8 Blazor 中,您可以像这样配置 HttpConnectionDispatcherOptions :

app.MapRazorComponents<App>() .AddInteractiveServerRenderMode() .Add(convention => { var meta = convention.Metadata.FirstOrDefault(e => e is HttpConnectionDispatcherOptions); if (meta is HttpConnectionDispatcherOptions options) { options.TransportSendTimeout = TimeSpan.FromMinutes(5); } });
对于电路选项和集线器选项:

builder.Services.AddRazorComponents().AddInteractiveServerComponents() .AddCircuitOptions(circuitOptions => { circuitOptions.DisconnectedCircuitMaxRetained = 100; }) .AddHubOptions(hubOptions => { hubOptions.ClientTimeoutInterval = TimeSpan.FromSeconds(10); });
    
© www.soinside.com 2019 - 2024. All rights reserved.