Пользовательский файл app_offline.htm во время публикации

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

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

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


person Charlino    schedule 17.05.2010    source источник
comment
Из комментариев к сообщению Скотта Гу о app_offline.htm ссылка не соответствует ожидаемой, так как я ничего не вижу об этом на странице.   -  person James Skemp    schedule 23.09.2010
comment
Не знаю, почему это не ссылка, но если вы посмотрите комментарий Скотта Гу в ответ Ричу в пятницу, 1 декабря 2006 г., в 00:56 - вы поймете, о чем я говорю. о.   -  person Charlino    schedule 23.09.2010
comment
Я хотел бы узнать ответ на этот вопрос, я хочу сделать то же самое. Кажется, что Microsoft будет очень легко реализовать в будущем выпуске, и это будет действительно очень удобно и практично.   -  person Aaron    schedule 25.10.2010


Ответы (9)


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

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

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

person Eonasdan    schedule 18.11.2011
comment
+1 Спасибо за ответ ... это не идеальное решение, но пока подойдет многим. Я просто надеюсь, что команда Visual Studio создаст что-то, что мне кажется приятной функцией :-) - person Charlino; 18.11.2011
comment
к сожалению, я только что узнал, что VS решил отменить его некоторое время спустя. Согласен, было бы неплохо иметь настраиваемое решение - person Eonasdan; 18.11.2011
comment
@Eonasdan Вы знаете, что вызывает перезапись? Возможно обновление до VS? - person FarFigNewton; 17.05.2013
comment
@guanome Я не думаю, что это было обновление VS. Я давно с этим не связывался, но не думаю, что это длилось дольше одной или двух публикаций. - person Eonasdan; 18.05.2013
comment
Я только что изменил C: \ users [user] \ AppData \ ... \ app_offline.htm на свой локальный компьютер только для чтения, и, похоже, он не работает. - person Steven; 06.02.2014
comment
VS2013, похоже, игнорирует этот файл altogeather - person Tod; 05.03.2015
comment
Я попытался изменить app_offline.htm в C: \ Users \ User \ AppData \ Roaming \ Microsoft \ VisualStudio \ 14.0 и опубликовать свое приложение. Но во время публикации на странице нет app_offline.htm. Я также пробовал использовать оригинальный app_offline.htm, но результат тот же. Любая идея? - person Jack; 20.05.2016
comment
Возникла проблема с поддержкой настройки app_offline.htm - github.com/aspnet/Tooling/issues/530 - person resnyanskiy; 16.11.2016
comment
Также используется VS2k17 (15.0), и он игнорирует файл на диске, и я читал, что он использует некоторую жестко закодированную строку. - person sobelito; 20.01.2018

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

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

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

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

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

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

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

person Lemonseed    schedule 07.07.2016
comment
Интересно, придется попробовать. Спасибо, что ответили спустя столько времени. +1 - person Charlino; 08.07.2016

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

app_offline.htm_

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

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

person Andrew Bullock    schedule 18.05.2010
comment
Как ваш сценарий развертывания удаляет косую черту в конце? Переименование файла на последнем этапе выполняется вручную? - person Charlino; 19.05.2010
comment
Я просто создаю app_offline.htm, как обычно (простой html / css), и добавляю его в свой проект (но с именем .htm_, поэтому мой сайт разработчика не отключается при отладке). убедитесь, что вы установили тип сборки content. Я публикую и загружаю код, затем у меня есть сценарий развертывания, который копирует код и переименовывает app_offline.htm_ в app_offline.htm. простые - person Andrew Bullock; 19.05.2010
comment
Удаляет ли сценарий развертывания файл после его завершения? - person Charlino; 20.05.2010
comment
нет, я оставлю его там, поэтому, когда я выкатываю новый код, я могу снова его включить - person Andrew Bullock; 25.02.2011
comment
@AndrewBullock Почему не выложили свой код вместо того, чтобы все объяснять словами ??? - person Jack; 20.05.2016
comment
@AndrewBullock Я попытался изменить app_offline.htm в C: \ Users \ User \ AppData \ Roaming \ Microsoft \ VisualStudio \ 14.0 и опубликовать свое приложение. Но во время публикации на странице нет app_offline.htm. Я также пробовал использовать оригинальный app_offline.htm, но результат тот же. Любая идея? - person Jack; 20.05.2016
comment
@AndrewBullock У меня 2 вопроса. Первый: куда мы должны добавить app_offline.htm_? корень решения или корень проекта? И второй вопрос: какой у вас скрипт для удаления завершающего _, а затем и наоборот? - person user197508; 05.07.2018

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

C: \ Users \ ИМЯ ПОЛЬЗОВАТЕЛЯ \ AppData \ Roaming \ Microsoft \ VisualStudio

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

person joe    schedule 18.10.2012

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

Я лично использую программу, которая немного более сложна, чем пакет, а также проверяет хеш-коды файлов, чтобы определить, нуждаются ли они в обновлении, создает zip-архив новых файлов и извлекает их на удаленный хост и удаляет файлы, которые мы назначаем для модульного тестирования, когда переходят от теста к производству. Я также объединил интеграцию 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 если вы просто делаете быструю партию!

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

person Jay    schedule 25.10.2011

Исходное содержимое app_offline.htm действительно хранится в загадочном месте (вероятно, жестко закодировано внутри одного из двоичных файлов), однако Visual Studio записывает содержимое в физический файл перед его загрузкой.

Если вы опубликовали хотя бы один раз, простой поиск в командной строке с использованием dir C:\app_offline.htm /s/a/b должен указать место, где записан временный файл. Должно получиться что-то вроде C:\Users\username\AppData\Roaming\Microsoft\VisualStudio\16.0_5fc0d832\app_offline.htm. Я не уверен, что эта шестнадцатеричная строка в конце одинакова для каждой установки или пользователя.

Установка этого файла только для чтения действительно предотвращает перезапись содержимого Visual Studio, и изменения в этот файл фактически будут выгружены во время публикации. Однако это вызывает внутреннюю ошибку, которая со временем может помешать загрузке.

app_offline.htm записывается перед событием после сборки, поэтому его просто нужно перезаписать, прежде чем Visual Studio начнет загрузку.

Более устойчивый подход - это сделать следующее:

1) Создайте собственный app_offline.htm в своем проекте. (Не в корневой папке вашего проекта, это помешает вам использовать F5 «Начать отладку».)

2) Используйте событие post-build, чтобы скопировать пользовательский app_offline.htm из папки проекта в промежуточную папку Visual Studio.

Командная строка события после сборки:

copy /y "$(ProjectDir)Resources\app_offline.htm" 
"C:\Users\%username%\AppData\Roaming\Microsoft\VisualStudio\16.0_5fc0d832\app_offline.htm"
person jscarle    schedule 01.04.2020

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

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

person Joop Stringer    schedule 07.03.2015

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

Комментарий в исходной статье

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

person Community    schedule 17.05.2010

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

App_Offline.htm

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

person griegs    schedule 17.05.2010