如何使用IIS appsettings.json在dotnet核心中配置Angular 6 URL重写

时间:2019-04-05 23:26:34

标签: angular .net-core

我正在使用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来设置转发文件,该如何设置?

2 个答案:

答案 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)。