Приложение .NET Core MVC не обновляет представление, если не опубликован весь проект

#asp.net-core #asp.net-core-mvc #azure-web-app-service #iis-10

#asp.net-core #asp.net-core-mvc #azure-web-app-service #iis-10

Вопрос:

У меня есть приложение .NET Core MVC, размещенное в IIS (разработка), а также служба приложений Azure (производство).

Когда я вношу простое изменение HTML в представление Razor и публикую только это представление, оно не обновляется.

Оно обновляется только в том случае, если я публикую весь проект.

Это происходит как в IIS, так и в службе приложений Azure.

Это поведение по умолчанию или я делаю что-то не так?

Вот страница конфигурации из службы приложений Azure:

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

Комментарии:

1. learn.microsoft.com/en-us/aspnet/core/mvc/views/…

Ответ №1:

Когда вы публикуете полную программу в iis, iis компилирует и запускает ее. .net core mvc по умолчанию отключает компиляцию во время выполнения, поэтому, даже если представление обновлено и выпущено, программа, которая уже запущена, не будет компилировать новое представление.

Если вы хотите, чтобы iis использовал новое представление после обновления VS и выпуска представления, вы можете добавить строку кода в автозагрузку, чтобы включить функцию компиляции и запуска.

  1. Добавьте Microsoft.AspNetCore.Mvc.Razor.Время выполнения компилирует пакет Nuget в проект.
  2. Добавьте следующий код в startup.cs:

services.AddRazorPages().AddRazorRuntimeCompilation();

  1. Опубликовать весь проект целиком.
  2. После всего этого, как только вы обновите просмотр и опубликуете. IIS отобразит новый вид.

Вот результат моего теста. введите описание изображения здесь

Комментарии:

1. Вот ссылка на документы на случай, если кому-то понадобится дополнительная информация: learn.microsoft.com/en-us/aspnet/core/mvc/views /…

Ответ №2:

Вам не нужно выполнять какие-либо операции на портале.

В статье, предоставленной Lex Li , рассказывается о содержимом Razor при компиляции. Проще говоря, серверный код C # может быть написан в .cshtml file . После компиляции оно станет projectname.Views.dll , поэтому при изменении, когда .cshtml файл не уверен, с какими проектами он связан, рекомендуется обновить его глобально, чтобы избежать ошибок, вызванных проблемами с версией.

Что касается вашей текущей проблемы с частичным обновлением, ее также легко решить. Во-первых, вам необходимо определить параметры включения файла или папки при компиляции. Сначала вам нужно прочитать официальный документ.

На скриншоте ниже приведен мой тестовый проект.

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

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

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

После моих изменений и настроек вы можете опубликовать свои пользовательские файлы или папки в рабочей среде Azure. (Часть настройки кода предназначена только для справки, кодирование в соответствии с конкретными проектами)

В сообщении вы сказали, что хотите опубликовать HTML-файл, затем вы можете щелкнуть правой кнопкой мыши файл или папку и выбрать опубликовать файл или папку.

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

Щелкните правой кнопкой test по папке.

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

Из приведенного ниже скриншота сообщения мы можем видеть, что частичное обновление прошло успешно, скорость очень высока, также запрашивается измененный контент, а глобальное обновление не выполняется.

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

запрос:

  1. Все вышеуказанные шаги протестированы и пройдены, а ответы и части кода приведены только для справки.

  2. Если вы столкнулись с проблемами во время работы, рекомендуется обратиться в службу поддержки на портале.