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:错误:执行请求时发生未处理的异常。有谁知道如何在 .NET 8 中覆盖这些选项或默认集线器 _blazor 的 HttpConnectionDispatcherOptions ?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 项目并添加上述行来重现这一点。
我问这个问题是因为我在 .NET6 项目中使用 app.UseEndpoints 覆盖了这些选项,没有任何问题
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapBlazorHub(options =>
{
options.TransportSendTimeout = TimeSpan.FromMinutes(5);
});
endpoints.MapFallbackToPage("/_Host");
});
我尝试使用之前在 .NET6 中使用的相同方法,但遇到了我在帖子中描述的端点不明确的错误
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);
});