剃刀页面路由和文件系统路由

时间:2020-08-19 22:09:54

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

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

@page "{id}"

在那里,所以我可以找到一条像这样的路线;

/MyPage/Blah

一切正常。 当我看到类似以下内容时;

/MyPage/Blah/content/somefile.js

它会产生404
我希望由文件系统处理。 我确实有以下文件;

wwwroot/MyPage/Blah/content/somefile.js

我正在使用asp.net core 3.1

2 个答案:

答案 0 :(得分:1)

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

然后,我发现是否在我的startup.cs中删除了app.UseStaticFiles();。我也会遇到同样的错误。 因此,您可以检查是否可以访问wwwwroot中的其他文件。否则,可以检查您的startup.cs,并在Configure中像这样添加app.UseStaticFiles();

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

            app.UseRouting();

答案 1 :(得分:0)

没有其他与静态文件路由混在一起的路由。 即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