Проблема развертывания с помощью Web Deploy и ACL - PullRequest
6 голосов
/ 25 июня 2011

Я развертываю веб-приложение на своем хосте с помощью Web Deploy.При запуске из Visual Studio с помощью команды «Опубликовать» все работает нормально.Когда я пытаюсь выполнить развертывание с помощью веб-развертывания из MSBuild, веб-сайт становится недоступным, и даже веб-панель управления моего веб-узла больше не может получить доступ к веб-сайту.Я проследил это до того, что я считаю разрешениями для папок веб-сайта.

Публикация из Visual Studio обновляет ACL, веб-сайт работает правильно и панель управления веб-хоста работает (даже если она была повреждена с помощьюразвертывание из MSBuild (ранее).

Ниже приведен вывод при запуске из Visual Studio:

------ Publish started: Project: mywebapp, Configuration: Release Any CPU ------
Transformed Web.config using Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
Auto ConnectionString Transformed Views\Web.config into obj\Release\CSAutoParameterize\transformed\Views\Web.config.
Auto ConnectionString Transformed obj\Release\TransformWebConfig\transformed\Web.config into obj\Release\CSAutoParameterize\transformed\Web.config.
Copying all files to temporary location below for package/publish:
obj\Release\Package\PackageTmp.
Start Web Deploy Publish the Application/package to https://myhost.net:8172/MsDeploy.axd?site=mywebapp.com ...
Updating setAcl (mywebapp.com).
Updating setAcl (mywebapp.com).
Updating filePath (mywebapp.com\bin\mywebapp.Core.dll).
Updating filePath (mywebapp.com\bin\mywebapp.Core.pdb).
Updating filePath (mywebapp.com\bin\mywebapp.dll).
Updating filePath (mywebapp.com\bin\mywebapp.pdb).
Updating filePath (mywebapp.com\Views\Web.config).
Updating filePath (mywebapp.com\web.config).
Updating setAcl (mywebapp.com).
Updating setAcl (mywebapp.com).
Publish is successfully deployed.
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

Я обнаружил файл, который, как мне кажется, использует Visual Studio во время развертывания, который содержит ACLИнформация.Он называется myapp.SourceManifest.xml и находится в папке C: \ Projects \ mywebapp \ obj \ Release \ Package .

<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <contentPath path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" />
  <setAcl path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" setAclResourceType="Directory" />
  <setAcl path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
</sitemanifest>

Мой файл MSBuild содержитЧтобы выполнить развертывание, выполните следующие действия:

<Exec Command='"$(ProgramFiles)\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="mywebapp\obj\test\package\mywebapp.zip" -dest:auto,computername="https://myhost.net:8172/MsDeploy.axd?site=mywebapp.com",username=XXXX,password=XXXX,authtype=basic -allowuntrusted:true -setparam:name="IIS Web Application Name",value="mywebapp.com"' />

Когда я запускаю MSBuild для развертывания, я вижу, что файлы обновляются, но ACL не обновляются.

Мое развертывание MSBuild происходит из другой папки из-за другой конфигурации (Test, а не Release), а файл mywebapp.SourceManifest.xml отличается.

<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <IisApp path="C:\Projects\mywebapp\obj\Test\Package\PackageTmp" managedRuntimeVersion="v4.0" />
</sitemanifest>

Разные mywebapp.SourceManifest.xml файлы, вероятно, как-то связаны с этим?Что мне нужно сделать, чтобы обновить ACL?


Обновление

Я обнаружил, что разница в mywebapp.SourceManifest.xml *Файл 1035 * был вызван наличием следующего в файле .csproj для моей тестовой конфигурации.

<IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>

Я изменил это значение на True , и теперь файлы манифестато же самое между конфигурациями Test и Release.

Я также обнаружил, что при использовании Publish from Visual Studio он работает для Release, но не для Test.Поэтому я сейчас пытаюсь выяснить, что отличается между двумя конфигурациями, которые вызывают успешное или неудачное развертывание.

1 Ответ

5 голосов
/ 25 июня 2011

Мне удалось заставить его работать. По словам моего веб-хостинга, есть некоторые проблемы с Web Deploy, которые они решают с командами Microsoft Web Deploy и IIS, и им пришлось применить некоторые временные исправления на сервере. Странно, так как все это работало пару месяцев назад.

В итоге я восстановил настройку <IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination> в файле проекта, чтобы Web Deploy не касался списков ACL. Мой веб-хостинг сказал, что он удаляет разрешения удостоверения пула приложений и не позволяет веб-панели управления иметь доступ к папкам сайта.

Они также сказали мне добавить <_MSDeployVersionsToTry Condition="'$(_MSDeployVersionsToTry)'==''">7.1;8.0;9.0</_MSDeployVersionsToTry> в файл проекта. Я добавил это, хотя я не уверен, что это имело значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...