Простое развертывание в ASP.NET (IIS убивает рабочий процесс до того, как будет готов новый рабочий процесс)

Я пытаюсь развернуть веб-приложение .NET в IIS (7.5) без каких-либо проблем для пользователей. Я убедился, что Disable Overlapped Recycle имеет значение False , но я все равно сталкиваюсь с той же проблемой каждый раз.

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

Ошибка сервера в приложении '/'. Мог не загружать файл или сборку MyApplicationWeb или один из зависимости. Процесс не может получить доступ к файлу, потому что он используется другим процессом. (Исключение от HRESULT: 0x80070020)

Я понятия не имею, как сделать это бесшовным. Сейчас я просто загружаю двоичный файл; но пока происходит загрузка (или локальная копия), она дает указанное выше поведение. Я также пробовал использовать веб-сад, но с тем же результатом.

То, что я не ищу:

  • Как решить эту проблему с помощью внешних балансировщиков нагрузки (это функциональное решение, но с точки зрения производительности это плохое решение для нескольких серверов и он вообще не будет работать, если есть только один сервер)
  • Как создать обход с обновлением на настраиваемой странице ошибок (поскольку у него есть некоторые очевидные проблемы, но, что более важно, он вообще не будет работать с веб-сервисами / ajax

Я действительно думаю, что это вполне выполнимо, учитывая http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/24e3c22e-79a9-4f07-a407-dbd0e7f35432.mspx?mfr= true

Обновление: В статье выше говорится:

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

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

ps. Я публикую это на SO, а не на SF / Webmasters и т. Д., Потому что я думаю, что такого рода знания, вероятно, будут минимальными среди людей, которые не занимаются разработкой, я надеюсь, что это нормально.

13
задан khellang 28 November 2013 в 15:01
поделиться