2

Моя установка Elastic Beanstalk не срабатывают через Visual Studio из-за этой ошибки:Не удается развернуть на Elastic Beanstalk: ERROR_FILE_IN_USE

2016-07-01 20: 45: 02627 ERROR 1 AWSBeanstalkCfnDeploy.DeploymentUtils - исключение во время развертывание. Microsoft.Web.Deployment.DeploymentDetailedClientServerException: Web Deploy не может изменить файл msvcr100.dll в пункте назначения, поскольку он заблокирован внешним процессом. Чтобы обеспечить успешную работу публикации, вам может потребоваться либо перезапустить приложение, чтобы освободить блокировку, либо использовать обработчик правил AppOffline для приложений .Net при следующей попытке публикации. Узнайте больше: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.

Ссылка предполагает, что я создаю файл pubxml с настройками, чтобы включить AppOffline, но этот файл, похоже, имеет отношение к публикации через VS, используя встроенную функцию публикации. Я не нашел никакой документации, предполагающей, что это будет работать для AWS.

Как включить AppOffline для развертывания эластичного бобового стежка?

Спасибо!

ответ

3

Извините, что это общий совет, а не код, который вам нужен, но решение - использовать крючки через .ebextensions. См. http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref-hooks.html.

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

У нас была аналогичная проблема, но DLL, о которой идет речь (abcPDF, v9), была заблокирована только потому, что мы инициализировали ее лицензирование во время application_start(), что EB не понравилось. Поэтому мы перешли на использование лицензии в другом месте.

Однако, я думаю, что этот подход будет работать.

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

/.ebextensions/recycleapppool.config

container_commands:

__recycle_app_pool:

____command: C: \ WINDOWS \ system32 \ Inetsrv \ appcmd.exe рецикл AppPool DefaultAppPool

+0

Спасибо за информацию! Я на самом деле не ударил этого в последнее время, но я обязательно буду отмечать этот поток, если проблема снова проявится. – Ryan

+0

Не могли бы вы объяснить, как вы добавили app_offline.htm? Я попытался остановить пул приложений и даже все службы iis, но файл иногда заблокирован. – red888

2

После довольно много экспериментов, единственным рабочим решением, которое я смог найти для этой проблемы, было

// in Project/.ebextensions/reset.config 

container_commands: 
    00_nuke: 
    command: IISReset 
    waitAfterCompletion: 0 

Стоимость простоя составила около 4 секунд (на t2.micro), в течение которого вы получаете 503, что, конечно же, не очень велико.

Примечание: есть Github issue for this (открыт на момент написания статьи).

Если у вас есть опция, разверните службу Azure, а не AWS, и есть варианты конфигурации для решения проблемы (например, переменная окружения MSDEPLOY_RENAME_LOCKED_FILES) - related Azure specific question.

+0

Я не вижу, как у вас может быть время простоя, если у вас есть как минимум 2 экземпляра в вашем env. У вас есть только один экземпляр? – red888