Перегрузка в реальном времени больше не работает с Angular in. net core 3.1 - PullRequest
2 голосов
/ 21 февраля 2020

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

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

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

Вещи, которые я пытался сузить, эту проблему:

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ

Я не знаю, связано ли это, но эта проблема проявляется немного иначе в Inte rnet Explorer. В IE при повторном запуске консоли отображаются следующие ошибки сценария, возникающие снова и снова

Invalid Host/Origin header
[WDS] Disconnected!

enter image description here

Эти ошибки сценария исчезают при использовании более старая Angular framework (5.2.0), но в этом случае не работает живая перезагрузка, пока я использую ASP. NET Core 3.1

Также возможно предотвратить эти сценарии ошибки при использовании

"disableHostCheck": true (angular. json -> architect -> serve -> options)

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

НО это не исправит текущую перезагрузку в inte rnet explorer

1 Ответ

1 голос
/ 22 февраля 2020

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

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, но он работает.

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

...