Почему app_offline.htm продолжает появляться в моем веб-проекте?
Я регулярно (каждые несколько дней) публикую свой веб-проект ASP.NET на локальном веб-сервере.
Но самая странная вещь продолжает происходить... файл с именем app_offline.htm продолжает появляться, незапрещенный, в моем веб-проекте!
Я несколько раз удалял этот файл, он не находится под контролем исходного кода, и AFAIK больше никто не вмешивается в проект. Но практически каждый раз, когда я пытаюсь опубликовать проект, моя публикация заканчивается неудачей (Unable to add 'app_offline.htm' to the Web site. The file 'app_offline.htm' already exists in this Web site.Error: The operation could not be completed. Unspecified error
), Я возвращаюсь, чтобы посмотреть на проект, и там он снова, большой, как жизнь, и я подозреваю, что если бы это было возможно, это дало бы малину в меня.:п
Прочитав немного об этом файле, я понял, что это простой способ перевести ваше приложение в автономный режим. Но я нигде не видел, чтобы он сам себя навязывал произвольно без веской причины.
Так где же это *&^%$#@%!! исходящий файл, и почему VS считает, что он мне нужен?
3 ответа
Это "особенность".NET 2.0
http://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx
http://www.codeproject.com/KB/aspnet/app_offline.aspx
"Самый простой способ избежать этого - никогда не публиковать напрямую на свой сервер. В любом случае, вам не следует... публиковать в локальной папке, а затем копировать сайт вверх"
Вы используете Visual Studio? http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102778
По умолчанию процесс публикации помещает его в каталог назначения, но затем удаляет его, когда процесс публикации завершен. Возможно это предотвращается от того, чтобы удалить это, когда это пытается?
Вот выдержка из статьи MSDN здесь:
Перед копированием файлов приложения инструмент "Копировать веб-сайт" помещает файл с именем App_offline.htm в корневой каталог целевого веб-сайта. Пока существует файл App_offline.htm, любые запросы к веб-сайту перенаправляются в этот файл. Файл отображает дружественное сообщение, которое сообщает клиентам, что веб-сайт обновляется. После копирования всех файлов веб-сайта инструмент "Копировать веб-сайт" удаляет файл App_offline.htm с целевого веб-сайта.
Я предполагаю, что по некоторым причинам есть два события публикации, так или иначе конфликтующие друг с другом?
Чтобы обойти это, я использую nant для построения своего решения, а затем копирую только то, что мне нужно. Я действительно сначала копирую файл app_offline, используя эту функцию, но потом мне удается, когда он копируется и удаляется.
Если база данных не поддерживает несколько процессов (Exp. SQL Server 2005, экспресс-выпуск или Access). Только один процесс может одновременно обращаться к базе данных. Поэтому, когда к базе данных осуществляется доступ через Visual Studio, среда выполнения ASP.net не может получить доступ к базе данных. Это приведет к внутренней ошибке сервера. Чтобы предотвратить это, VS 2005 помещает файл app_offline.htm в корневой каталог приложения. Файл содержит вышеуказанное сообщение. Это заставляет ASP.net переводить приложение в автономный режим. Обратите внимание, что доступ к базе данных означает открытие любого компонента базы данных (т. Е. Таблицы, представления, хранимой процедуры и т. Д.) В окне конструктора. Когда окно разработки закрыто, VS 2005 или VS 2008 удаляет файл app_offline.htm, переводя приложение в режим onliner.
Нашел это здесь...