我正在使用IIS将Angular SPA部署到我的.NET Core应用程序。
我进行了生产Angular构建(ng build --base-href / ng --deploy-url / ng),并将其部署到ng目录中的wwwroot。
当您手动转到index.html的Angular网址时,我可以使用它
https://localhost:44316/ng/index.html
但是,如果刷新或手动导航到URL,则会得到404。
https://localhost:44316/ng/dash
不足为奇,因为Angular说这将在没有URL重定向的情况下发生。在Angular documentation中,它表示要在web.config中插入一个重写规则。
但是,我使用的是.NET Core,我的一个团队成员告诉我,修改web.config XML是旧的处理方式。看来我需要修改appsettings.json才能使此重写规则发生。
Soo ....有人做过吗?如果我不修改web.config来设置转发文件,该如何设置?
答案 0 :(得分:0)
您是否尝试过使用哈希策略来确认这可能是服务器配置错误? 通常在服务器未指向“主角度页面”(即您提到的index.html)时发生404。
要使用哈希策略,您只需要将此参数添加到RouterModule导入中即可:
RouterModule.forRoot(routes,{useHash:true})
答案 1 :(得分:0)
我忘记了在哪里找到这个小代码段,但确实成功了。我在Startup.cs的Configure()中使用了以下内容:
app.Run(async (context) =>
{
context.Response.ContentType = "text/html";
await context.Response.SendFileAsync(Path.Combine(env.WebRootPath, "ng/index.html"));
});
基本上,在我的ng目录中的所有页面上,它将加载index.html(不更改url)。