Удаление комментария в разделе <compilation><assemblies> файла web.config приложения MVC исправляет исключение InvalidOperationException - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть повтор следующего сценария, его можно воспроизводить снова и снова (до и после развертывания appdir содержит одинаковое содержимое):

  • Приложение MVC, работающее под Umbraco, .NET 4.6, с расширениями собственного производства
  • Для развертывания я удаляю все, кроме web.config, и копирую новое содержимое в папку приложений IIS, Windows 2012 R2 Server.
  • Приложение автоматически перезапускается, кэши очищаются, результат (только на одной конкретной странице, когда инициируется MVC-проверка полей ввода): InvalidOperationException, подробности:

    An unhandled exception occurred
    System.InvalidOperationException: Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.
    at System.ComponentModel.DataAnnotations.ValidationAttribute.SetupResourceAccessor()
    at System.ComponentModel.DataAnnotations.ValidationAttribute.get_ErrorMessageString()
    at System.ComponentModel.DataAnnotations.ValidationAttribute.FormatErrorMessage(String name)
    at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)
    
  • Затем я удаляю комментарий в разделе <compile><assemblies> (комментарий в первой строке)
  • Результат: ошибка ушла
  • Добавление комментария назад: ошибка все еще исчезла
  • Начиная с первого шага снова: ошибка вернется

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

Я не могу обнаружить разницу в структуре каталогов. Любое изменение в разделе <compilation>, кажется, вызывает это поведение (даже комментарий). Другие изменения в других разделах файла web.config не вызывают это поведение.

Я полагаю, что это ошибка в способе обновления .NET-кэша компилятора (кеш JIT или иным способом), но я не могу это установить. Это известная проблема с веб-приложениями .NET? Я не сталкивался с этим раньше (за два десятилетия разработки .NET), насколько я помню.

...