Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Razor页面路由和文件系统路由_Asp.net Core_Razor_Razor Pages - Fatal编程技术网

Asp.net core Razor页面路由和文件系统路由

Asp.net core Razor页面路由和文件系统路由,asp.net-core,razor,razor-pages,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首先,我测试了代码,我可以工作了

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

@page "{id}"
它在那里,所以我可以有一条这样的路线

/MyPage/Blah
这一切都有效。 当我看到像下面这样的东西

/MyPage/Blah/content/somefile.js
结果是404。 我希望这是由文件系统处理的。 我确实有以下文件

wwwroot/MyPage/Blah/content/somefile.js

我正在使用asp.net core 3.1

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

然后我发现如果我删除app.UseStaticFiles;在我的startup.cs中,我可以得到与您相同的错误。 因此,您可以检查是否可以访问WWroot中的其他文件。如果不能,您可以检查startup.cs,并添加app.UseStaticFiles;在配置中类似于此:

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

            app.UseRouting();

没有其他会干扰静态文件路由的路由。 i、 使用BlazorFrameworkFiles是我的问题

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

/MyPage
如果我有一堆静态文件

wwwroot/MyPage/some.js
它也会这样做。 一切都好

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

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

@page "{id}/{*path:nonfile}"
所以当我得到一整页的更新

/MyPage/MyBlazorApp/counter

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

开箱即用的路由工作。我有一个混乱的UseBlazorFrameworkFiles,它干扰了静态文件路由。