Плагин 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" в корне веб-приложения. Надеюсь, поможет.

Другие вопросы по тегам