RT, 用Angular做练习,build后放入 Asp .Net Core 2.0 项目 wwwroot 文件夹中, run 起项目
一切正常。偶然发现如果按F5 或者 手动刷新浏览器,会出现页面空白的情况。
按F12发现没有任何错,就是空页面。
想了一下, 应该是刷新的时候走入的是.Net Core 的路由,之前的Angular路由应该是失效了。
觉得解决思路应该是在.Net Core的路由上做文章。
度娘出第一种解决方案(未生效)
//app.UseMvc(routes =>
//{
// routes.MapSpaFallbackRoute(
// name: "spa-fallback",
// defaults: new { controller = "Home", action = "Index" });
//});
仔细看了下原文中,应该是安装的SPA(Single Page Application)的.Net Core 模板,估计是框架差异。
最后用下面这段代码解决了问题
app.Use(async (context, next) => {
await next();
if (context.Response.StatusCode == 404 &&
!System.IO.Path.HasExtension(context.Request.Path.Value) &&
!context.Request.Path.Value.ToLower().StartsWith("/api/")&&
!context.Request.Path.Value.ToLower().StartsWith("/swagger"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseMvcWithDefaultRoute();
app.UseDefaultFiles();
语法很眼熟,不清楚 await 是干啥的,有待继续深入,先Mark。