Asp.net core 如何在ASP.NET核心MVC应用程序中配置Blazor集线器映射

Asp.net core 如何在ASP.NET核心MVC应用程序中配置Blazor集线器映射,asp.net-core,asp.net-core-mvc,blazor,blazor-server-side,Asp.net Core,Asp.net Core Mvc,Blazor,Blazor Server Side,我有一个现有的MVC应用程序,我希望使用blazor来满足一些特定的需求。集成后,我意识到在应用程序的索引页面上,razor组件工作正常,没有问题。但是当我移动到另一个页面时,它将丢失blazor hub连接。我注意到这可能是一个映射问题,因为在主页上,[appurl]/_blazor工作正常,连接正常。但是当我转到另一个页面时,[appurl]/[controller]/_blazor尝试连接,但抛出404。 如何让它在应用程序上的所有路由上工作?根据您的信息,我猜您缺少基本标记,或者您没有映

我有一个现有的MVC应用程序,我希望使用blazor来满足一些特定的需求。集成后,我意识到在应用程序的索引页面上,razor组件工作正常,没有问题。但是当我移动到另一个页面时,它将丢失blazor hub连接。我注意到这可能是一个映射问题,因为在主页上,
[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");
            });
\u Host.cshtml
中,您必须添加


没有
endpoints.MapBlazorHub()
您的组件将被呈现,但您将无法连接到Blazor服务器,如果没有
,浏览器将执行完整的页面重新加载,而不是使用Blazor导航到新页面。

感谢您的回复。我试过你的解决办法,但没用。我注意到在这类示例中,没有
endpoints.MapFallbackToPage()
行代码。我认为它只适用于完整的blazor应用程序。