簡體   English   中英

Razor 頁面路由和文件系統路由

[英]Razor page routing and FileSystem routing

我有一個帶有以下注釋的 razor 頁面MyPage.cshtml

@page "{id}"

它就在那里,所以我可以有一條看起來像這樣的路線;

/MyPage/Blah

這一切都有效。 當我看到如下內容時;

/MyPage/Blah/content/somefile.js

它導致404
我希望由文件系統處理。 我確實有以下文件;

wwwroot/MyPage/Blah/content/somefile.js

我正在使用 asp.net 核心 3.1

首先,我測試了代碼,我可以工作了。

然后我發現我是否刪除app.UseStaticFiles(); 在我的 startup.cs 中。我可以得到與你相同的錯誤。 所以你可以檢查你是否可以訪問 wwwwroot 中的其他文件。如果不能,你可以檢查你的 startup.cs,並添加app.UseStaticFiles(); 在配置中像這樣:

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

            app.UseRouting();

不要有其他與 static 文件路由混淆的路由。 即 UseBlazorFrameworkFiles 是我的問題。

好的,開箱即用的 asp.net 核心 3.1 將路由到我的頁面;

/MyPage

如果我有一堆 static 文件

wwwroot/MyPage/some.js

它也會拉動它。 都好。

當我的頁面托管 blazor 應用程序並且具有非文件客戶端路由時,我遇到了其他路由問題。

為了確保在所有這些情況下正確處理路由,我必須將以下內容添加到我的 razor 頁面。

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

因此,當我刷新整個頁面時

/MyPage/MyBlazorApp/counter

我的頁面現在處理/MyPage/MyBlazorApp部分,rest 被移交給客戶端 blazor 應用程序,最后 go 移交給客戶端路由: /MyPage/MyBlazorApp/counter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM