Почему app_offline.htm продолжает появляться в моем веб-проекте?
-
23-09-2019 - |
Вопрос
Я регулярно (примерно каждые несколько дней) публикую свой веб-проект 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 считает, что он мне нужен?
Решение
Это «функция» .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 Express Edition или Access).Только один процесс может одновременно обращаться к базе данных.Поэтому, когда доступ к базе данных осуществляется через Visual Studio, среда выполнения ASP.net не может получить доступ к базе данных.Это приведет к внутренней ошибке сервера.Чтобы предотвратить это, VS 2005 помещает файл app_offline.htm в корневой каталог приложения.Файл содержит вышеуказанное сообщение.Это приводит к тому, что ASP.net переводит приложение в автономный режим.Обратите внимание, что доступ к базе данных означает открытие любого компонента базы данных (т.таблица, представление, хранимая процедура и т. д.) в окно дизайна.Когда окно дизайна закрыто, VS 2005 или VS 2008 удаляет файл app_offline.htm, снова переводя приложение в онлайн-режим.
Нашёл здесь...