ASP.NET перекомпилирует по каждому запросу


У меня есть ASP.NET Webforms скомпилировал сайт, который безупречно работает на моей локальной машине. Как только сайт будет переведен на живые серверы (банк из 10 серверов, работающих под управлением IIS8 на windows server 2012), сайт будет перекомпилироваться по каждому запросу.

Если я пойду во временное ASP.NET каталог файлов есть библиотеки DLL App_Web для всех пользовательских элементов управления на сайте вместе с .удалите файлы для всех двоичных файлов, что, как я думаю, вызывает перезапуск appdomain каждый раз.

App_Web_course.аспн.cdcab7d2.иджбуки7.файл DLL App_Web_course.аспн.cdcab7d2.иджбуки7.файл DLL.удалить

Он иногда работает нормально на некоторых серверах, и когда я смотрю на временные файлы .NET на этих серверах .удалить файлы там нет.

Я вырываю свои волосы, за 17 лет развития, я никогда не видел этого раньше, и, кажется, нет никакой рифмы или причины для этого.

Обновление: Если кто-то еще испытывает это, пожалуйста, проверьте мой ответ ниже для моего разрешение.

2 2

2 ответа:

Возможные причины, вызывающие перекомпиляцию.

  • вы обновляете web.config
  • вы создаете/удаляете файл app_offline.htm в корневом каталоге.
  • вы создаете / изменяете любой .aspx или .aspx.cs файл
  • вы создаете / изменяете файлы в папке App_Code
  • вы оставили некоторые папки загрузки без присмотра, а пользователи загружают файлы aspx.
  • Вы время / дата на компьютере неверно (назад несколько лет)

Вы можете использоватьProcess Monitor , чтобы увидеть, что происходит из всего этого. если вы не можете найти его в коде или не знаете, что делают другие библиотеки.

У меня есть обновление и решение проблемы.

Во время первоначального сообщения я забыл, что файлы были расположены на сетевом ресурсе SMB. Это было причиной этой постоянной перекомпиляции из-за fcnMode ASP.NET.

Process Monitor показал тысячи запросов через w3wp.exe для "FileChangeNotify", который при попадании в критический каталог, такой как" bin", вызовет перекомпиляцию и перезапуск приложения.

К счастью, есть одна строка исправьте это. В сети.конфигурация(ы) вашего проекта, измените следующую строку, чтобы включить следующий атрибут:

<httpRuntime fcnMode="Disabled" />

Это прекратится ASP.NET от сканирования сетевого каталога на предмет постоянных изменений файлов.