Je déploie un paquet d'applications Web à partir de la ligne de commande MSBuild vers MSDepSvc sur IIS6 qui fonctionne bien avec la commande suivante en utilisant l'authentification de base :
MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***
Cependant, ce que j'aimerais vraiment faire, c'est supprimer les paramètres de nom d'utilisateur et de mot de passe et revenir à l'authentification intégrée sous l'identité de l'utilisateur actuel. Cette commande est destinée à un serveur de construction et je préférerais que les informations d'identification en texte clair d'un compte ayant des droits d'administrateur sur l'environnement cible (requis pour MsDepSvc) ne soient pas visibles. Je n'arrive pas à trouver de documentation sur la façon de procéder et le fait de déposer les informations d'identification renvoie 401 unauthorised lorsque je tente de publier.
Ce qui rend la situation particulièrement frustrante, c'est que je peux très bien exécuter la commande de déploiement dans le paquet avec l'authentification intégrée (il suffit de ne pas inclure les informations d'identification), mais je n'arrive pas à l'exécuter à partir de la ligne de commande MSBuild. J'essaie d'encapsuler le paquet et les processus de déploiement dans une seule commande sans modifier les fichiers de construction et c'est la seule chose qui m'en empêche actuellement.
Des idées ?
Editar Après quelques discussions avec Sayed et en regardant un peu plus profondément dans la sortie de la ligne de commande, après avoir exécuté la commande MSBuild ci-dessus (sans paramètres de nom d'utilisateur et de mot de passe), la commande MSDeploy suivante est invoquée :
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2
Vous pouvez voir que l'attribut UserName est défini et que la valeur est le nom d'utilisateur de l'utilisateur actuellement connecté. Si je retire cet attribut et que j'exécute directement la commande ci-dessus, le déploiement se déroule sans problème.
Sur cette base, pourquoi la commande MSBuild originale insère-t-elle un attribut UserName lorsqu'elle appelle MSDeploy ? Cela semble être le seul obstacle maintenant.
0 votes
Si vous définissez UseMSDeployExe à true, la commande n'inclut pas AuthType=NTLM ???
0 votes
En fait, je suis confronté à ce problème lorsque je publie depuis Visual Studio vers une autre machine du même domaine. Après avoir entré les informations d'identification avec lesquelles je suis déjà connecté, la publication se passe bien et la commande MSBuild sous-jacente affiche AuthType='NTLM', mais inclut également mes informations d'identification. Je suis donc en quelque sorte revenu à la commande d'origine !
0 votes
Pour Visual Studio 2012, vous devez omettre complètement la propriété /P:UserName.