Плагин TFS 2012 Visual Studio мгновенно создает и удаляет "app_offline.htm" всякий раз, когда файл извлекается, вызывая перезагрузку домена приложений ASP.NET
У меня проблема с Visual Studio 2012, которая сводит меня с ума. Мы разрабатываем веб-приложение ASP.NET, и при запуске приложения оно должно загружать много памяти в память. Иногда для запуска и готовности к серверу первых http-запросов требуется от 20 до 30 минут.
Мы используем контроль исходного кода TFS и, в основном, каждый раз, когда кто-то редактирует файл, TFS помечает файл как "извлеченный" (маленькая красная галочка появляется рядом со значком имени файла в обозревателе решений) И мгновенно создает и удаляет " файл app_offline.htm"в корне веб-приложения.
Это приводит к выгрузке веб-приложения. Я использовал вход в события Application_Start и Application_End, чтобы выяснить это. Затем я использовал SysInternals Process Monitor, чтобы увидеть, что происходит. Когда я увидел, что app_offline.htm упоминается в загадочном выводе procmon, я использовал отдельного наблюдателя файловой системы под названием Directory Monitor, который подтвердил, что app_offline.htm действительно был создан и мгновенно удален.
Эффект от этого заключается в том, что если вам нужно внести несколько изменений, приложение должно многократно выгружаться / перезагружаться во время разработки. Это тратить часы.
Мало того, постоянная перезагрузка домена приложения приводит к тому, что IIS в конечном итоге исчерпывает память, а затем мы должны выполнить IISRESET.
Кто-нибудь знает, почему TFS создает этот файл? И есть ли способ заставить его остановиться?
2 ответа
Я обнаружил обходной путь.
1) Перейдите в папку, в которой Visual Studio кэширует файл app_offline.htm C:\Users[пользователь]\AppData\Roaming\Microsoft\VisualStudio\11.0\ (замените [user] своим именем пользователя)
2) Удалить файл app_offline.htm
(ПРИМЕЧАНИЕ: это само по себе не решит проблему, так как VS заново создает файл, когда он не найден)
3) Создайте каталог с именем app_offline.htm (КАТАЛОГ!)
По сути, это вызывает ошибку в процессе, который пытается использовать файл, потому что это не файл, а конфликт имен означает, что VS не может попытаться воссоздать файл. К счастью, ошибка не имеет побочных эффектов.
Now continue with using VS and Team Foundation Server and enjoy not constantly having the appdomain reloaded!
Если вы будете публиковать из Visual Studio в каталог под IIS, то это произойдет. И VS 2012 держит этот файл под расположением
C:\Users\[user]\AppData\Roaming\Microsoft\VisualStudio\11.0\app_offline.htm
Легкая мысль может быть опубликована непосредственно на вашем сервере. И я считаю, что вы не должны, вы можете опубликовать в локальной папке, а затем скопировать сайт в нужное место.
После того, как вы удалите сопоставление (публикуете непосредственно на сервере), я уверен, что когда вы "извлечете" файл, он не создаст моментально и удалит файл "app_offline.htm" в корне веб-приложения. Надеюсь, поможет.