Après beaucoup de configuration d'essai et d'erreur, je suis actuellement en mesure de scripter msdeploy.exe pour déployer un package intégré à Visual Studio 2010 sur un serveur distant exécutant IIS 7.5 avec une ligne de commande comme:
Commande d'authentification de base:
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
Puis-je éliminer la nécessité de fournir un mot de passe dans la ligne de commande en activant l'authentification unique? Les documents Web Deploy mentionnent le paramètre authType qui peut spécifier «NTLM», au lieu de Basic. Cependant, chaque fois que j'essaie ceci (voir l'exemple ci-dessous), j'obtiens une erreur indiquant un 401. Le journal Web WMSvc affiche un 401.2 et aucun ID utilisateur n'est renseigné dans cette entrée de journal, contrairement aux tentatives précédentes utilisant l'authentification de base montrent en fait le DOMAINE \ mon utilisateur dans le journal Web. Aucune autre information utile n'est trouvée dans l'Observateur d'événements du client ou du serveur.
Remarque: le serveur Web cible se trouve sur un autre domaine, je fais donc un net use \\webserver /u:DOMAIN\myuser
pour établir un jeton.
Tentative de commande d'authentification unique:
msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted
Il semble que msdeploy.exe ne s'authentifie pas correctement avec IIS au niveau HTTP. Qu'est-ce qui pourrait mal?
Le client est Windows XP, le serveur est Win2008R2. Les deux exécutent la version 7.1.618.0 de msdeploy.exe. Les deux ont .NET 2.0, 3.5 et 4.0 installés.