Пользовательский файл app_offline.htm во время публикации - PullRequest
28 голосов
/ 17 мая 2010

Когда я публикую свое приложение ASP.NET MVC, оно генерирует файл app_offline.htm, чтобы перевести сайт в автономный режим при обновлении сайта, а затем удаляет файл после успешной публикации.

Это круто, и мне очень нравится эта идея, но я хочу создать свой собственный файл app_offline.htm, о котором известно действие публикации, и поместить его туда, где он не повлияет на мой сайт разработки, т.е. t постоянно находится в корне моего сайта разработки, переводя его в автономный режим.

РЕДАКТИРОВАТЬ: Из комментариев пост Скотта Гу о app_offline.htm , кажется, что настройка файла app_offline.htm была невозможна с VS 2005 - это изменилось с VS 2008 и теперь VS 2010

Ответы [ 8 ]

25 голосов
/ 18 ноября 2011

Я знаю, что это старо, но так как я нашел решение, посмотрев сюда, я подумал, что должен дать ответ. VS 11 содержит файл публикации app_offline.htm в этом месте:

C:\Users\[user]\AppData\Roaming\Microsoft\VisualStudio\11.0\app_offline.htm

Я протестировал и настроил его, и он работает, если вы измените этот файл. Недостатком, конечно, является то, что этот файл используется для всех веб-публикаций.

11 голосов
/ 07 июля 2016

Простое решение, которое многие могут найти подходящим, включает в себя просто добавление вашего собственного файла с именем "app_offline.htm" в ваше решение.

Я протестировал этот метод с использованием Visual Studio 2015, и он действительно работает.

Однако единственным недостатком является то, что в процессе публикации сгенерированный по умолчанию файл app_offline.htm копируется сначала , а затем файлы решения в том, что выглядит в / почти алфавитном порядке.

Это означает, что ваш пользовательский файл app_offline.htm быстро (но не сразу) перезаписывает сгенерированный системой файл. Поэтому (некрасиво) сгенерированная системой копия app_offline.htm может быть передана запросам в течение 1-2 секунд после начала публикации, прежде чем будет обновлена ​​вашим пользовательским файлом.

Процесс публикации автоматически удаляет app_offline.htm с удаленного сервера независимо от его содержимого или происхождения.

Преимущество (по сравнению с заменой системной копии) состоит в том, что ваша собственная копия переносима, автоматически зависит от решения и работает с контролем источников.

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

9 голосов
/ 18 мая 2010

Я использую свой

app_offline.htm_

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

Затем я могу запустить свои сценарии БД / сделать что угодно, затем переименовать файл, возвращающий сайт.

3 голосов
/ 18 октября 2012

Эндрю волов ответ работает как шарм! хотя это зависит от того, какую визуальную студию вы используете.

C: \ Users \ USERNAME \ AppData \ Roaming \ Microsoft \ VisualStudio

- это каталог, в который вы должны сначала попасть, выберите версию VS [8.0 / 9.0 .....] и отредактируйте файл app_offile.htm.

3 голосов
/ 25 октября 2011

Вы можете использовать пакетный файл, который вызывает компилятор с информацией о текущем каталоге в качестве параметров ... Затем он копирует app_offline.htm и копирует новый файл поверх. Запустите его там, где находится источник.

Лично я использую программу, которая немного сложнее, чем пакет, а также проверяет хеш файлов, чтобы определить, нужно ли им обновлять, создает архив новых файлов, извлекает его на удаленный хост и удаляет файлы, для которых мы назначаем модульное тестирование при переходе от испытаний к производству. Я также объединил интеграцию SVN с моим решением, поэтому, когда вы публикуете для тестирования или производства, вы также можете использовать SVN. Программа хранится на сетевом диске и вызывается из командного файла на локальном ПК с информацией о текущем каталоге. Таким образом, разработчикам не нужно обновляться до нового установщика или app_offline, если происходят какие-либо изменения. Наконец он удаляет app_offline.

Проверьте http://msdn.microsoft.com/en-us/library/system.web.compilation(v=vs.80).aspx для получения дополнительной информации или http://msdn.microsoft.com/en-us/library/ms229863(v=vs.80).aspx, если вы просто делаете быстрый пакет!

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

1 голос
/ 07 марта 2015

Для пользователей Visual Studio Express 2013 для Интернета файл расположен по адресу C: \ Users [пользователь] \ AppData \ Roaming \ Microsoft \ VWDExpress \ 12.0

Это можно изменить в соответствии с вашими потребностями.

0 голосов
/ 17 мая 2010

Вы видели это?

App_Offline.htm

Это может быть (не совсем) то, что вы хотите, но это решает проблему, я думаю.

0 голосов
/ 17 мая 2010

Еще в 2006 году Скотт Гу сказал, что нет способа настроить файл, который VS генерирует при публикации.

Комментарий в оригинальной статье

Мне тоже было бы интересно решить эту проблему, но я не смог найти в Google что-то однозначное, противоположное.

...