我使用的是什麼行之有效的Microsoft.AspNetCore.Builder.SpaRouteExtensions.MapSpaFallbackRoute
:
app.UseMvc(routes =>
{
// Default route for SPA components, excluding paths which appear to be static files (have an extension)
routes.MapSpaFallbackRoute(
"spaFallback",
new { controller = "Home", action = "Index" });
});
HomeController.Index
與您的index.html
相當。你也可以路由到一個靜態頁面。
有點偏離主題,但如果你也有在同一項目中的API的api
文件夾下,你可以爲任何API路由的默認404響應不匹配:
routes.MapRoute(
"apiDefault",
"api/{*url}",
new { controller = "Home", action = "ApiNotFound" });
你會結束與以下行爲:
/controller
=>沒有延長,所以從HomeController.Index
服務SPA默認頁面,讓SPA處理路由
/file.txt
=>擴展檢測,提供靜態文件
/api/controller
=>適當的API響應(使用屬性路由或設置另一個地圖的API控制器)
/api/non-existent-route
=> 404 NotFound()
從HomeController.ApiNotFound
返回在很多情況下你會想要一個獨立項目中的API,但這是一個可行的選擇。
如果你已經在路由元素中,你已經超過了p oint在管道中提供靜態文件的位置。您可以創建一個全部控制器操作,它將返回文件的內容。 – DavidG
有沒有推薦的方法呢? – Mardoxx
據我所知不是。 – DavidG