Msdeploy, pode sincronizar mas não excluir

2

Estou tentando configurar a implantação automática usando msbuild.
Eu consegui ter uma chamada de sincronização msdeploy para publicar com êxito um pacote zip criado com msbuild.
No entanto, quando tento executar uma chamada de exclusão msdeploy antes da operação de sincronização, ela falha com

ERROR_USER_NOT_AUTHORIZED_FOR_DEPLOYMENTPROVIDER

Existe alguma permissão ou regras adicionais de delegação do IIS que devem ser definidas em comparação com a usada para a chamada de sincronização?

O msdeploy -verb:sync funciona corretamente:

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

Howerver o msdeploy -verb:delete falha:

  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.

Como você pode ver, estou usando um arquivo proj msbuild para isso. As chamadas msdeploy são realizadas com a regra <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>

Alguma idéia de porque a sincronização pode adicionar e alterar arquivos enquanto a exclusão falha?

    
por Koresh 02.07.2015 / 11:10

1 resposta

1

Ok, funcionou usando o -dest:issApp em vez do provedor -dest:auto .
Curiosamente, não consigo usar o provedor -dest:iisApp ao sincronizar a partir de um pacote de código-fonte sem receber um erro de evento:

Microsoft.Web.Deployment.DeploymentException: Source (sitemanifest) and destination (iisApp) are not compatible for the given operation.

Portanto, uso o -dest:auto para sincronização e o -dest:iisApp para exclusão.

<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"
        />
    
por 02.07.2015 / 11:32