【问题标题】:MapFallbackToPage on subfolder in ASP.NET CoreASP.NET Core 中子文件夹上的 MapFallbackToPage
【发布时间】:2020-12-29 14:54:28
【问题描述】:

我正在尝试在我的 ASP.NET Core 应用程序中创建到 Razor 页面的后备路由,以便我可以在子路径上托管服务器端 Blazor 应用程序。如文档中所述,从根创建回退路由。但我希望它是我在路线上的后备/Admin/*。

我当前的代码如下所示:

app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToPage("/Admin", "/Admin/_Host");
});

我也尝试过使用以下设置:

app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToPage("/Admin/{*segment}", "/Admin/_Host");
});

当我输入 Blazor 应用程序中存在的页面的 URL 时,两种配置最终都会生成 404。 我验证了使用<NavLink> 在 Blazor 应用程序内导航确实有效。

这样做的正确方法是什么?

【问题讨论】:

  • 请插入:endpoints.MapFallbackToPage 中的内容;您尝试访问的网址;你的组件的@page

标签: c# asp.net-core blazor


【解决方案1】:

事实证明,我应该使用以下代码:

app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToPage("/Admin/{**segment}", "/Admin/_Host");
});

注意模式中的**。它是 URL 中 /Admin 部分之后的所有段的递归映射。我只使用了一颗星,这导致深层嵌套的 URL 与模式不匹配。

我了解到MapFallbackToPage 方法的模式接受常规路由模式。

对于有兴趣了解更多的人:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-5.0

替代解决方案

您还可以在_Host.cshtml 的顶部添加@page "/Admin/{**segment}" 指令。您必须删除Startup.cs 中的MapFallbackToPage 调用。

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 2019-06-10
    • 2023-04-08
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多