我使用的是什么行之有效的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