Após muitas configurações de tentativa e erro, atualmente sou capaz de criar scripts para o msdeploy.exe para implantar um pacote criado no Visual Studio 2010 em um servidor remoto executando o IIS 7.5 com uma linha de comando como:
Comando de autenticação básica:
msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='Basic',username='DOMAIN\myuser',password='xxx',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted
Posso eliminar a necessidade de fornecer uma senha na linha de comando ativando a autenticação de passagem? Os documentos do Web Deploy mencionam o parâmetro authType que pode especificar 'NTLM', em vez de Básico. No entanto, sempre que tento isso (veja o exemplo abaixo), recebo um erro indicando um 401. O log da web do WMSvc mostra um 401.2 e nenhum ID de usuário é preenchido nessa entrada de log, ao contrário das tentativas anteriores usando a autenticação Básica, na verdade, mostram o DOMÍNIO \ myuser no log da web. Nenhuma outra informação útil é encontrada no visualizador de eventos do cliente ou servidor.
Nota: O servidor da web de destino está em outro domínio, por isso faço net use \\webserver /u:DOMAIN\myuser
para estabelecer um token.
Tentativa de comando de autenticação de passagem:
msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted
Parece que o msdeploy.exe não está sendo autenticado corretamente com o IIS no nível HTTP. O que pode estar errado?
Cliente é Windows XP, servidor é Win2008R2. Ambos estão executando o msdeploy.exe versão 7.1.618.0. Ambos têm o .NET 2.0, 3.5 e 4.0 instalado.