3 回答
TA贡献1871条经验 获得超13个赞
这里的问题是你有一个 SPA,而 Angular 有它自己的路由,但是当你尝试使用像https://localhost:5001/login这样的 URL 时,这条路由是由 MVC 而不是由 Angular 提供的,MVC 会找不到合适的控制器,结果返回 404。
你应该做的是返回 index.html 以响应此类请求,以便 Angular 路由可以处理它。你可以看看这篇文章:
https://www.toptal.com/angular/angular-5-asp-net-core
TA贡献1803条经验 获得超6个赞
原来我的问题出在我处理 404 的方式上。我context.Request.Path = "/index.html";在 Startup.cs中做的,但它仍然无法解析 html 文件,所以我让它重定向回根路径:
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 &&
!Path.HasExtension(context.Request.Path.Value))
{
// This is what I changed. I need to resolve to "/" instead of "/index.html"
context.Request.Path = "/";
context.Response.StatusCode = 200;
await next();
}
});
TA贡献1884条经验 获得超4个赞
使用此代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");
});
}
- 3 回答
- 0 关注
- 187 浏览
添加回答
举报