【问题标题】:Razor page routing and FileSystem routingRazor 页面路由和文件系统路由
【发布时间】:2020-12-09 05:33:18
【问题描述】:

我有一个带有以下注释的剃须刀页面MyPage.cshtml

@page "{id}"

它在那里,所以我可以有一条看起来像这样的路线;

/MyPage/Blah

这一切都有效。 当我看到类似以下内容时;

/MyPage/Blah/content/somefile.js

结果为@​​987654325@。
我希望由文件系统处理。 我确实有以下文件;

wwwroot/MyPage/Blah/content/somefile.js

我正在使用 asp.net core 3.1

【问题讨论】:

    标签: asp.net-core razor razor-pages


    【解决方案1】:

    首先,我测试了代码,我可以工作了。

    然后我发现如果我在我的 startup.cs 中删除 app.UseStaticFiles();。我会遇到同样的错误。 所以你可以检查你是否可以访问wwwwroot中的其他文件。如果不能,你可以检查你的startup.cs,并在配置中添加app.UseStaticFiles();

                app.UseHttpsRedirection();
                app.UseStaticFiles();
    
                app.UseRouting();
    

    【讨论】:

    • 开箱即用的路由工作。我有一个混乱的 UseBlazorFrameworkFiles,它干扰了静态文件路由。
    【解决方案2】:

    不要有其他与静态文件路由混淆的路由。 即 UseBlazorFrameworkFiles 是我的问题。

    好的,所以开箱即用的 asp.net core 3.1 将路由到我的页面;

    /MyPage
    

    如果我有一堆静态文件

    wwwroot/MyPage/some.js
    

    它也会拉动它。 都很好。

    当我的页面托管 Blazor 应用程序并且有非文件客户端路由时,我遇到了其他路由问题。

    为了确保在所有这些情况下正确处理路线,我必须将以下内容添加到我的剃须刀页面。

    @page "{id}/{*path:nonfile}"
    

    所以当我刷新整个页面时

    /MyPage/MyBlazorApp/counter
    

    我的页面现在处理 /MyPage/MyBlazorApp 部分,其余部分交给客户端 blazor 应用程序最终转到客户端路由:/MyPage/MyBlazorApp/counter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 2018-10-18
      • 2019-05-22
      • 2020-05-01
      • 2020-05-06
      • 2018-10-16
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多