在 .net core 3.1 中,实时重新加载似乎不再适用于 Angular

Ace*_*s25 6 livereload asp.net-core angular .net-core-3.1

我正在尝试使用面向 ASP.NET Core 3.1 的 Angular 模板在 Visual Studio 2019 中搭建一个全新的 ASP.NET Core Web 应用程序。

当应用程序工作时,实时重新加载只会工作一两次,然后就会完全停止工作,无论您是对 .ts 文件还是 .html 文件进行更改。关闭 Visual Studio,然后使用任务管理器关闭 Node.js 实例有时会使其再次工作,但如果幸运的话,它只会在再次中断之前进行一次或两次实时重新加载。

我可以看出,每次保存更改时,Angular CLI 都会重新编译我的代码,因为我所要做的就是单击浏览器中的地址栏,然后按 Enter 键即可看到我的更改得到反映。因此,这似乎主要是尝试向浏览器发送刷新命令时失败。

我试图缩小这个问题的范围:

  • 将 ClientApp 文件夹中的 Angular 版本升级到 9.1 或降级到 5.2.0。在这两种情况下,我仍然遇到实时重新加载错误。它似乎与所使用的 Angular 版本无关,而是与我所针对的 .net core 版本相关。

  • 使用命令提示符启动我的 Angular 项目(npm start),然后访问 localhost:4200 - 在这种情况下,每次我将更改保存到 ClientApp 文件夹中的文件时,实时重新加载都会起作用 - 但我已有效地将 .net core 从在这里循环。在这种情况下,我不再使用 ASP.NET Core 来提供我的 Angular SPA。

  • 使用命令提示符启动我的 Angular 项目 (npm start),然后按以下方式编辑我的 Startup.cs:

    if (env.IsDevelopment())
    {
        //spa.UseAngularCliServer(npmScript: "start");
        spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,实时重新加载错误仍然存​​在

  • 使用 Angular 模板在 Visual Studio 2019 中搭建新的 ASP.NET Core Web 应用程序,但这次的目标是 ASP.NET Core 2.1。这次实时重新加载工作完美,这证实了我的理论,即这与目标 .net core 的版本有关。它构建了 Angular 5.2.0 SPA,但您可以将其替换为 Angular 9.1 SPA,并且浏览器的实时重新加载仍然有效。

还有其他人遇到过这个问题或找到任何解决方法吗?我真的很想在 .net core 3 中开始我的新项目,但我担心它有问题并且目前不能很好地与 Angular 配合使用。

编辑

我不知道它是否相关,但这个问题在 Internet Explorer 中的显示略有不同。在 IE 中,反复调出控制台,反复出现以下脚本错误

Invalid Host/Origin header
[WDS] Disconnected!
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用较旧的 Angular 框架 (5.2.0) 时,这些脚本错误会消失,但只要我使用 ASP.NET Core 3.1,实时重新加载在这种情况下仍然不起作用

还可以使用以下任一方法来防止这些脚本错误

"disableHostCheck": true(angular.json -> 架构师 -> 服务 -> 选项)

"start": "ng serve --configuration es5 --disable-host-check"(package.json)

但这不会修复 Internet Explorer 中的实时重新加载

Ace*_*s25 2

看来这个错误已经发布在这里:

https://github.com/dotnet/aspnetcore/issues/11498

用户 Cito 发布了一种有效的解决方案: https://github.com/dotnet/aspnetcore/issues/11498#issuecomment-566928086

要使实时重新加载正常工作,请确保在您的网络服务器设置中启用 SSL。我不确定为什么实时重新加载只能在 .NET Core 3.1 中通过 SSL 运行,但确实如此。

如果有人有任何理论,我很想知道为什么这可以解决问题