如何在核心 MVC 应用中配置 ASP.NET Blazor 中心映射



我有一个现有的 MVC 应用程序,我希望在其中使用 blazor 来满足某些特定要求。集成后,我意识到在应用程序的索引页面上,剃须刀组件工作得很好,没有问题。但是当我移动到另一个页面时,它将丢失 blazor 中心连接。我注意到这可能是一个映射问题,因为在主页上,[appurl]/_blazor工作和连接得很好。但是当我转到另一个页面时,[appurl]/[controller]/_blazor尝试连接,但它抛出 404。 如何让它适用于应用程序上的所有路由?

根据你的信息,我猜你缺少基本标记,或者你没有映射 BlazorHub。 如果需要,例如 Blazor 处理/app/* 下的所有 URL,其他 URL 由 MVC 处理,则需要按如下所示配置终结点:

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/app/{*page}", "/_Host");
});

在您的_Host.cshtml中,您必须添加<base href="/app" />

如果没有endpoints.MapBlazorHub();,组件将呈现,但你将无法连接到 Blazor-Server,如果没有<base href="/app" />浏览器将执行完整的页面重新加载,而不是使用 Blazor 导航到新页面。

最新更新