Проблема MapRequestHandler при развертывании в IIS с предварительно скомпилированными представлениями
У меня проблема с развертыванием приложения ASP.NET MVC с предварительно скомпилированными представлениями. До сих пор я не занимался предварительной компиляцией представлений, и приложение годами работало безупречно. Если я их предварительно скомпилирую, сайт будет работать при первом запуске, как и следовало ожидать. Однако если я перезапущу его из IIS, я начну получать ошибки 404.0. Самое забавное: если я изменю несущественную конфигурацию приложения в IIS, IIS перезапустит приложение самостоятельно, и оно оживает. Если он будет переработан или перезапущен, он вернется к 404.0 с.
Я заметил, что на странице ошибки указан неправильный физический путь. На скриншоте ниже физический путь - C:\wwwsites\workpal\settings. Фактически, "настройки" - это имя контроллера и папка по пути: C:\wwwsites\workpal\views\settings, которая содержит index.cshtml. Кроме того, следует ли использовать здесь StaticFile? Я новичок, но мне кажется, что IIS не понимает, как разрешать URL-адреса.
- Приложение работает под управлением.NET 4.7.2
- IIS 8.5
- Приложение работает годами без предварительно скомпилированных представлений, без проблем. Ранее мы использовали.NET 4.5, но я сомневаюсь, что это причина. Я получаю такие же результаты с 4.5.
- Единственное изменение - это включение предварительно скомпилированных представлений в настройках публикации VS. Я пробовал каждую конфигурацию "Advanced Precompile Settings" - те же результаты.
- Приложение с предварительно скомпилированными представлениями работает при первом запуске, когда IIS обнаруживает изменение в каталоге приложения или когда я меняю несущественные настройки приложения в IIS.
- Приложение не работает при переработке или перезапуске вручную.
- Я пробовал свежий AppPool и свежий сайт - безрезультатно.
- Проверено на двух несвязанных серверах (физических машинах).