Asp.Net 5, MSDeploy и IIS не удалось обновить после развертывания

Наше окружение:

  • Windows Server 2012 R2
  • IIS 8.5
  • ASP.NET 5 / dnx-clr-win-x64.1.0.0-rc1-update1
  • Сборка с помощью Visual Studio Team Services и MSBuild для локального агента (со следующими аргументами /p:DeployOnBuild=true;DeployMethod=Package;PublishDNXVersion=dnx-clr-win-x64.1.0.0-rc1-update1)
  • Агент Microsoft Web Deploy 3.6

Мы используем непрерывную интеграцию Team Services. Всякий раз, когда кто-то синхронизирует свои коммиты, Team Services / TFS клонируют новую версию репозитория, запускают MS Build с (/p:DeployOnBuild=true;DeployMethod=Package;PublishDNXVersion=dnx-clr-win-x64.1.0.0-rc1-update1), а затем вызвать файл bat для запуска MSDeploy.exe на двух разных серверах с балансировкой нагрузки.

Примерно в 85% случаев процесс развертывания работает без нареканий. В остальное время обновление висит где-то, и я не уверен, где. Другими словами, я не вижу изменений, которые кто-то сделал в Razor, изменений, которые кто-то сделал в файле CSS, и т. Д. С другой стороны, это то, что я знаю:

  • Если я запускаю / останавливаю пул приложений, он каждый раз выбирает новый код.
  • Если я перезапускаю пул приложений, он почти каждый раз собирает новый код.
  • Если я перезапускаю экземпляр IIS, он работает большую часть времени.
  • Проблема может возникнуть в блоке 1, но не в блоке 2. В других случаях все наоборот.

Я пробовал различные варианты MS Deploy:BASE OPTION # 1

@"msdeploy.exe" 
-source:iisapp=%SOURCE_FOLDER% 
-dest:iisapp=%DEST_IISAPP%,
computerName=%COMPUTER_NAME2%,
userName=%USERNAME%,
password=%PASSWORD%,
includeAcls='False' 
-enablelink:contentlibextension 
-verb:sync 

Вариант № 1 (запуск / остановка экземпляра IIS после развертывания):

postsync:runCommand="C:\windows\system32\inetsrv\AppCmd Stop Site %DEST_ISSAPP_NAME% & C:\windows\system32\inetsrv\AppCmd Start Site %DEST_ISSAPP_NAME%"

Вариант № 2 (в автономном режиме):

...,appOfflineTemplate="maintenance.html" -enablerule:AppOffline

Мы привыкли сбрасывать файл Web.Config в приложениях веб-форм Asp.Net 4.5 для принудительной перезагрузки, но DNX, похоже, блокирует файл Web.Config и не позволяет нам обновлять его во время работы сайта.

Любые мысли о том, как мы можем лучше всего автоматизировать процесс утилизации, ограничивая время простоя в производстве и UAT?

0 ответов

Другие вопросы по тегам