Живая перезагрузка больше не работает с Angular в .NET core 3.1

Я пытаюсь создать новое веб-приложение ASP.NET Core в Visual Studio 2019 с помощью шаблона Angular, ориентированного на ASP.NET Core 3.1.

Пока приложение работает, Live Reloading будет работать только один или два раза, прежде чем сломаться, а затем перестает работать вообще, независимо от того, вносите ли вы изменения в файлы .ts или .html. Закрытие Visual Studio, а затем использование диспетчера задач для закрытия экземпляров Node.js иногда заставляет его снова работать, но затем, если вам повезет, он выполнит живую перезагрузку только один или два раза, прежде чем снова сломается.

Я могу сказать, что Angular CLI перекомпилирует мой код каждый раз, когда я сохраняю изменения, потому что все, что мне нужно сделать, это щелкнуть адресную строку в моем браузере и нажать Enter, чтобы увидеть, как мои изменения отражаются. Таким образом, это, по-видимому, в первую очередь неудача при попытке отправить браузеру команду обновления.

Я попытался сузить этот вопрос:

  • Обновление моей версии Angular в папке ClientApp до 9.1 или понижение до 5.2.0. В обоих случаях у меня все еще возникает ошибка перезагрузки в реальном времени. Похоже, это связано не с используемой версией Angular, а скорее с версией ядра .NET, на которую я нацелен.

  • Используйте командную строку для запуска моего проекта Angular (запуск npm), а затем посетите localhost: 4200 - в этом сценарии живая перезагрузка работает каждый раз, когда я сохраняю изменения в файле в папке ClientApp, но я эффективно вырезал ядро ​​.net из петля здесь. Я больше не использую ASP.NET Core в этом сценарии для обслуживания моего Angular SPA.

  • Используйте командную строку для запуска моего проекта Angular (npm start), а затем отредактируйте мой Startup.cs следующим образом:

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

В этом сценарии все еще присутствует ошибка Live reloading.

  • Создайте новое веб-приложение ASP.NET Core в Visual Studio 2019 с шаблоном Angular, но на этот раз нацелив его на ASP.NET Core 2.1. На этот раз живая перезагрузка работает отлично, что подтверждает мою теорию о том, что это связано с целевой версией ядра .net. Он поддерживает Angular 5.2.0 SPA, но вы можете поменять его на Angular 9.1 SPA, и перезагрузка браузера в реальном времени по-прежнему будет работать.

У кого-нибудь еще была эта проблема или найдены ли способы ее решения? Я действительно хотел бы начать свой новый проект в .net core 3, но я обеспокоен тем, что у него есть проблемы и он не очень хорошо работает с Angular на данный момент.

ИЗМЕНИТЬ

Не знаю, связано ли это, но в Internet Explorer эта проблема проявляется несколько иначе. В IE при повторном вызове консоли снова и снова появляются следующие ошибки сценария.

Invalid Host/Origin header
[WDS] Disconnected!

введите здесь описание изображения

Эти ошибки сценария исчезают при использовании более старой структуры 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.


person Aceofspades25    schedule 21.02.2020    source источник


Ответы (1)


Похоже, что эта ошибка была опубликована здесь:

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

Одно работающее решение было опубликовано пользователем Cito: https://github.com/dotnet/aspnetcore/issues/11498#issuecomment-566928086

Чтобы перезагрузка в реальном времени работала, обязательно включите SSL в настройках вашего веб-сервера. Я не уверен, почему Live Reloading работает только в .NET Core 3.1 через SSL, но это так.

Мне было бы интересно услышать, почему это решает проблему, если у кого-то есть теории

person Aceofspades25    schedule 22.02.2020