2010-02-17 2 views
4

У нас есть работающее приложение asp.net, к которому обращаются различные офисы клиента по всему миру (около 42 офисов в 12 странах). Теперь, после 8 месяцев его размещения, мы должны включить обновления на 6 страницах и добавить 15 новых страниц asp.net. Теперь есть способ, по которому мы могли бы обновить существующий потенциал вверх, не снимая его в автономном режиме, то есть останавливая его?Как обновить запущенное приложение asp.net?

+0

Просто загрузите страницы? –

+1

Загрузка новых файлов приведет к перезапуску пула приложений. Я предлагаю вам загружать файлы в новый каталог и настраивать iis для использования нового dir –

+1

Далее, если какой-либо офис находится в процессе обработки или инициировал некоторую транзакцию, тогда не перезапустил бы приложение, препятствующее ему? – HotTester

ответ

4

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

Однако, если вы разместили свой сайт как pre-compiled application for deployment only, тогда ответ будет отрицательным - вам потребуется полная перекомпиляция и перераспределение.

Если вы добавляете исходный код в приложение, домен приложения будет переработан. Если это вас беспокоит, когда вы говорите «прекратить» приложение, вы должны знать, что это может вызвать заметную задержку (несколько секунд), а сеансы пользователя будут сброшены, если вы используете сеансы InProc, но приложение никогда не будет недоступно в противном случае.

Вы также можете найти следующую статью очень полезную - особенно раздел «Жизненный цикл компиляции», где говорится о перезагрузке приложения. ASP.Net Application Lifecycle Overview.

+0

Это правильный ответ (ИМО). Также обратите внимание, что есть много хороших применений для предварительно скомпилированных приложений, поэтому не игнорируйте их в будущем. – Russell

2

Как пояснил @Mendy в комментариях, просто загрузите новые и измененные файлы и любые новые/измененные файлы из папки bin. Я понимаю, что вы не хотите брать его в автономном режиме, но вам понадобится в течение нескольких минут, чтобы вы обновили файлы - если вы этого не сделаете, пользователи будут испытывать непредсказуемое поведение при доступе к нему во время внесения изменений.

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

+2

+1 - тестирование важно. Пользователи предпочитают блокироваться в течение небольшого периода времени, когда он будет работать, по сравнению с непредвиденным сбоем. – Russell

2

Если вам действительно нужна 24/7 безотказной работы, вы можете захотеть взглянуть на нагрузки сбалансированной сети серверы - можно обновить, пока другой продолжает обслуживать. Обратите внимание, что для этого вам потребуется некоторое тщательное управление в отношении того, как вы обрабатываете свои сеансы.

+0

Можете ли вы подробнее рассказать о сценарии управления сеансом – HotTester

+0

Это зависит от того, как вы это настроите, вам может потребоваться отходить от сеансов inProc (если вы не можете гарантировать, что каждый запрос, идущий на тот же сервер), использовать ASP.net StateServer или SqlServer в качестве резервного хранилища. У вас будет некоторое время простоя, но вы улучшите устойчивость своего сайта, так как это даст вам некоторую избыточность в случае, если один сервер умрет. – Paddy

Смежные вопросы