Назад | Перейти на главную страницу

Msdeploy, может синхронизировать, но не удалять

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

ERROR_USER_NOT_AUTHORIZED_FOR_DEPLOYMENTPROVIDER

Есть ли какие-либо разрешения или дополнительные правила делегирования IIS, которые следует установить по сравнению с тем, что используется для вызова синхронизации?

В msdeploy -verb:sync работает правильно:

  Total changes: 676 (672 added, 0 deleted, 4 updated, 0 parameters changed, 55787329 bytes copied)
  Syncing done.

Howerver msdeploy -verb:delete не удается:

  Info: Using ID '138cbadf-3449-4574-8e3f-0a3bd13fe751' for connections to the remote server.
EXEC : error Code: ERROR_USER_NOT_AUTHORIZED_FOR_DEPLOYMENTPROVIDER [c:\PATH\Deploy.proj]
  More Information: Could not complete an operation with the specified provider ("auto") when connecting using the Web Management Service. This can o
  ccur if the server administrator has not authorized the user for this operation. auto http://go.microsoft.com/fwlink/?LinkId=178034
    Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_AUTHORIZED_FOR_DEPLOYMENTPROVIDER.

Как видите, я использую для этого файл msbuild proj. Вызовы msdeploy выполняются с <Exec> правило:

<Target Name="Publish" >
        <Message Importance="High" Text="Deleting from $(PublishServer) ..." />
        <!-- THIS FAILS: -->
        <Exec
          WorkingDirectory="$(MsDeployBinaryFolder)\"
          Command="&quot;$(MsDeployBinary)&quot; -verb:delete -dest:auto,computerName=&quot;https://$(PublishServer):8172/msdeploy.axd?Site=$(IisAppHostName)&quot;,authType=Basic,userName=$(UserName),password='$(Password)' -allowUntrusted -disableLink:ContentExtension -disableLink:AppPoolExtension"
        />
        <Message Importance="High" Text="Deletion done." />


        <Message Importance="High" Text="Syncing to $(PublishServer) ..." />
        <!-- THIS WORKS: -->
        <Exec
          WorkingDirectory="$(MsDeployBinaryFolder)\"
          Command="&quot;$(MsDeployBinary)&quot; -verb:sync -source:package=&quot;$(ArchiveDir)\$(SiteName)\$(SiteName).zip&quot; -dest:auto,computerName=&quot;https://$(PublishServer):8172/msdeploy.axd?Site=$(IisAppHostName)&quot;,authType=Basic,userName=$(UserName),password='$(Password)' -allowUntrusted -setParam:&quot;IIS Web Application Name&quot;=&quot;$(IisAppHostName)/$(IisSiteName)&quot;"
        />
        <Message Importance="High" Text="Syncing done." />
  </Target>

Есть идеи, почему синхронизация может добавлять и изменять файлы, а удаление не удается?

Хорошо, он заработал, используя -dest:issApp вместо -dest:auto провайдер.
Как ни странно, я не могу использовать -dest:iisApp поставщик при синхронизации из исходного пакета без получения ошибки события:

Microsoft.Web.Deployment.DeploymentException: источник (sitemanifest) и место назначения (iisApp) несовместимы для данной операции.

Поэтому я использую -dest:auto для синхронизации и -dest:iisApp для удаления.

<Exec
          WorkingDirectory="$(MsDeployBinaryFolder)\"
          Command="&quot;$(MsDeployBinary)&quot; -verb:delete -dest:iisApp=&quot;$(IisAppHostName)/$(IisSiteName)&quot;,computerName=&quot;https://$(PublishServer):8172/msdeploy.axd?Site=$(IisAppHostName)&quot;,authType=Basic,userName=$(UserName),password='$(Password)' -allowUntrusted -disableLink:ContentExtension -disableLink:AppPoolExtension"
        />