Después de mucha configuración de prueba y error, actualmente puedo ejecutar el script msdeploy.exe para implementar un paquete integrado en Visual Studio 2010 en un servidor remoto que ejecuta IIS 7.5 con una línea de comando como:
Comando básico de autenticación:
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
¿Puedo eliminar la necesidad de proporcionar una contraseña en la línea de comando habilitando la autenticación de paso? Los documentos de Web Deploy mencionan el parámetro authType que puede especificar 'NTLM', en lugar de Basic. Sin embargo, cada vez que intento esto (vea el ejemplo a continuación), aparece un error que indica un 401. El registro web de WMSvc muestra un 401.2 y no se rellena ningún ID de usuario en esa entrada de registro, a diferencia de los intentos anteriores que usan la autenticación básica, en realidad muestran DOMAIN \ myuser en el registro web. No se encuentra ninguna otra información útil en el visor de eventos del cliente o servidor.
Nota: El servidor web objetivo está en otro dominio, así que hago un net use \\webserver /u:DOMAIN\myuser
para establecer un token.
Intento de comando de autenticación de paso:
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 msdeploy.exe no se autentica correctamente con IIS en el nivel HTTP. ¿Qué podría estar mal?
El cliente es Windows XP, el servidor es Win2008R2. Ambos ejecutan msdeploy.exe versión 7.1.618.0. Ambos tienen instalado .NET 2.0, 3.5 y 4.0.