Résoudre les problèmes de web deploy avec Visual Studio
S’applique à : Internet Information Services
Cet article vous aide à résoudre une série d’erreurs lors de la tentative de publication à partir de Visual Studio sur un serveur qui n’a pas été correctement configuré via Web Deploy. Bien que l’article soit écrit pour des versions de produit spécifiques, les concepts peuvent également être appliqués aux versions plus récentes.
Pour collecter les captures d’écran et les erreurs suivantes, utilisez un nouveau projet ASP.Net MVC 3 dans Visual Studio 2010 SP1. Le serveur de destination était une installation propre de Windows Server 2008 R2 SP1 avec Internet Information Services (IIS). Aucune autre configuration n’a été effectuée.
Impossible de se connecter au serveur
La première erreur que vous êtes susceptible de rencontrer ressemble à la capture d’écran suivante dans la fenêtre de sortie de Visual Studio. Pour améliorer la lisibilité, le texte intégral du message est fourni sous la capture d’écran :
Web deployment task failed.(Could not connect to the destination computer ("deployserver").On the destination computer, make sure that Web Deploy is installed and that the required process("The Web Management Service") is started.)
This error indicates that you cannot connect to the server. Make sure the service URL is correct,firewall and network settings on this computer and on the server computer are configured properly,and the appropriate services have been started on the server.
Error details:
Could not connect to the destination computer ("deployserver"). On the destination computer,
make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
Unable to connect to the remote server
A connection attempt failed because the connected party did not properly respond after a period
of time, or established connection failed because connected host has failed to respond 1.1.1.1:8172
Le texte mis en surbrillance dans cette erreur (et les autres erreurs ci-dessous) est la clé pour comprendre la nature du problème. Web Deploy n’a pas obtenu de réponse du serveur. Visual Studio ne peut donc pas faire la distinction entre plusieurs causes possibles. Par conséquent, il donne une liste de choses à essayer.
Le service de gestion web est-il installé ?
Sur le serveur IIS, ouvrez le Gestionnaire des services Internet (IIS) et sélectionnez le nœud nom de l’ordinateur. Dans la vue Fonctionnalités , faites défiler jusqu’à la section Gestion et recherchez les icônes suivantes :
Si ce n’est pas le cas, vous devez installer le service de gestion via la boîte de dialogue Ajouter des services de rôle . Il peut également être installé via web Platform Installer à partir de l’onglet Produits . Sélectionnez Serveur dans la colonne de gauche, puis IIS : Service de gestion.
Remarque
Après avoir installé le service de gestion, vous devez le démarrer, car il n’est pas démarré automatiquement. Pour ce faire, double-cliquez sur l’icône Service de gestion . Une fois le volet Service de gestion affiché, sélectionnez Démarrer dans le volet Actions à droite.
L’URL du service est-elle correcte ?
Par défaut, le service de gestion web écoute le port 8172, mais cela peut être modifié. Le moyen le plus simple de case activée le port utilisé consiste à ouvrir le volet Service de gestion, comme décrit ci-dessus, et à examiner les informations d’adresse IP et de port dans la section Connections. Si le port a été modifié par un autre port que 8172, vous devez vous assurer que le nouveau port est autorisé via le pare-feu et mettre à jour l’URL du service dans les paramètres de publication de Visual Studio pour utiliser le nouveau port.
(403) Interdit
Une fois le service de gestion web installé, Visual Studio peut afficher l’erreur suivante :
Web deployment task failed.(Could not connect to the destination computer ("deployserver") using
the specified process ("The Web Management Service") because the server did not respond.
Make sure that the process ("The Web Management Service") is started on the destination computer.)
Could not connect to the destination computer ("deployserver") using the specified process
("The Web Management Service") because the server did not respond. Make sure that the process
("The Web Management Service") is started on the destination computer.
The remote server returned an error: (403) Forbidden.
Ce message est quelque peu trompeur. Il indique que le serveur n’a pas répondu, mais l’erreur 403 indique que Web Deploy a pu contacter le serveur, mais la demande a été activement refusée. Le journal HTTP pour le service de gestion web peut vous aider à confirmer que la demande a atteint le serveur et fournir des détails sur la requête réelle qui a échoué. Ce journal se trouve à l’adresse %SystemDrive%\Inetpub\logs\WMSvc
par défaut. Comme les autres journaux IIS, les données ne sont pas écrites immédiatement dans le journal. Vous devrez donc peut-être attendre quelques minutes pour voir la demande ou redémarrer le service de gestion web pour vider le journal.
Dans le WMSVC
journal, l’erreur mentionnée ci-dessus ressemble à celle-ci :
2011-06-02 17:59:05 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 403 6 5 1669
Le 6
après dans 403
le journal est le code de sous-status et signifie que l’adresse IP a été rejetée. Vous trouverez la liste complète des codes de status et de sous-status pour IIS à l’adresse HTTP status codes dans IIS.
Le service de gestion est-il configuré pour autoriser les connexions à distance ?
C’est la raison la plus probable de la réponse 403.6. Double-cliquez sur l’icône Service de gestion, puis vérifiez que l’option Activer l’Connections à distance est cochée. Vous devez arrêter le service pour apporter des modifications. Veillez donc à le redémarrer lorsque vous avez terminé.
Le service de gestion web a-t-il été autorisé via le Pare-feu Windows ?
Lorsque vous installez le service de gestion web sur le serveur, une règle de pare-feu entrante est nommée Service de gestion web (TRAFIC HTTP). Vérifiez que cette règle est activée en accédant à Démarrer>l’administrationTools>Pare-feu Windows avec sécurité avancée. Sélectionnez Règles de trafic entrant et recherchez la règle de gestion web dans la liste. Il doit être activé pour tous les profils.
Si vous utilisez un pare-feu tiers, vous devez vous assurer que les connexions entrantes sur le port 8172 sont autorisées.
Des restrictions d’adresse IP ont-ils été configurées pour le service de gestion ?
L’autre raison courante pour laquelle vous pouvez obtenir une erreur 403 est si le service de gestion a été configuré pour refuser l’adresse IP du client. Par défaut, il est configuré pour autoriser toutes les adresses IP tant que les connexions à distance sont autorisées. Vous pouvez case activée pour les restrictions IP en double-cliquant sur l’icône Service de gestion. Toutes les règles de restriction IP configurées se trouvent en bas de la page dans les restrictions d’adresse IPv4.
(404) Introuvable
Web deployment task failed.(Could not connect to the destination computer ("deployserver").
On the destination computer, make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
The requested resource does not exist, or the requested URL is incorrect.
Error details: Could not connect to the destination computer ("deployserver").
On the destination computer, make sure that Web Deploy is installed and that the required process
("The Web Management Service") is started.
The remote server returned an error: (404) Not Found.
L’erreur 404 indique que Web Deploy a pu contacter le service de gestion web sur le serveur, mais n’a pas pu trouver ce dont il avait besoin. La première chose à faire est de confirmer la ressource à laquelle Web Deploy a essayé de se connecter. Si vous recherchez dans le journal du service de gestion web sous %SystemDrive%\Inetpub\logs\WMSvc sur le serveur de destination, vous voyez une entrée dans le WMSVC
journal qui ressemble à la suivante :
2011-05-12 15:21:50 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 404 7 0 1606
Msdeploy.axd est le gestionnaire des requêtes Web Deploy.
Web Deploy est-il installé ?
Vous pouvez vérifier que Web Deploy est installé en accédant au panneau de configuration Programmes et fonctionnalités et en recherchant Microsoft Web Deploy 2.0 dans la liste des programmes installés. Si ce n’est pas le cas, vous pouvez l’installer via web Platform Installer en accédant à l’onglet Produits . Il est répertorié comme Outil de déploiement web 2.1. Vous devez également vérifier que le service de Deployment Agent Web (MsDepSvc) est en cours d’exécution.
Le gestionnaire de déploiement web est-il installé ?
Si Web Deploy est installé et que vous obtenez toujours cette erreur, assurez-vous que la fonctionnalité Gestionnaire de déploiement IIS 7.0 dans Web Deploy est installée. Dans le panneau de configuration Programmes et fonctionnalités , recherchez Microsoft Web Deploy 2.0, cliquez avec le bouton droit et sélectionnez Modifier. Dans l’Assistant qui s’affiche, sélectionnez Suivant sur la première page, puis modifier sur la deuxième page. Ajoutez Gestionnaire de déploiement IIS 7.0 et tout ce qui s’y trouve.
Sélectionnez Suivant pour terminer l’Assistant. Vous devez redémarrer le service de gestion web après avoir effectué cette modification.
(401) Non autorisé
Une fois que Web Deploy et le service de gestion web sont correctement configurés, vous devez configurer des règles de délégation pour permettre aux utilisateurs de mettre à jour le contenu. Pour les problèmes d’autorisations, vous pouvez rencontrer plusieurs erreurs différentes dans Visual Studio. Par exemple :
Web deployment task failed.(Connected to the destination computer ("deployserver")
using the Web Management Service, but could not authorize.
Make sure that you are using the correct user name and password, that the site you are connecting
to exists, and that the credentials represent a user who has permissions to access the site.
Make sure the site name, user name, and password are correct. If the issue is not resolved,
please contact your local or server administrator.
Error details:
Connected to the destination computer ("deployserver") using the Web Management Service,
but could not authorize. Make sure that you are using the correct user name and password,
that the site you are connecting to exists, and that the credentials represent a user who
has permissions to access the site.
The remote server returned an error: (401) Unauthorized.
Dans le journal WMSvc, vous pouvez voir le message suivant :
2011-05-12 15:50:12 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 401 2 5 1653
2011-05-12 15:50:12 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 user1 192.168.0.203 - 401 1 1326 124
Le status HTTP mis en surbrillance dans la sortie Visual Studio est une erreur Accès refusé. L’status win32 en surbrillance dans le journal des erreurs correspond à « Échec de connexion : nom d’utilisateur inconnu ou mot de passe incorrect », il s’agit donc d’un simple échec d’ouverture de session. Si l’utilisateur est authentifié mais ne dispose pas des droits nécessaires à la publication, l’entrée de journal ressemble à la suivante :
2011-05-12 15:55:38 192.168.0.211 POST /msdeploy.axd site=default%20web%20site 8172 - 192.168.0.203 - 401 2 5 0
Pour permettre à cet utilisateur de publier, vous devez configurer la délégation conformément aux instructions fournies dans Configurer le gestionnaire de déploiement web.
Opération non autorisée
Si le compte est en mesure de se connecter, mais qu’il n’a pas reçu les droits nécessaires pour publier le contenu, le message d’erreur suivant s’affiche :
Web deployment task failed. (Unable to perform the operation ("Create Directory") for the specified
directory ("bin"). This can occur if the server administrator has not authorized this operation for
the user credentials you are using.
Le WMSvc
journal affiche les réponses HTTP 200 pour ces requêtes. Heureusement, Web Deploy 2.1 écrit également des informations dans le journal du service Microsoft Web Deploy. Pour l’afficher, sélectionnez observateur d'événements (local)>Journaux des applications et des> servicesMicrosoft Web Deploy.
Pour cette erreur particulière, le journal des événements contient des détails supplémentaires (tronqués par souci de concision) :
User: DEPLOYSERVER\User1
Client IP: 192.168.0.203
Content-Type: application/msdeploy
Version: 8.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 7.1.1070.1
MSDeploy.Method: Sync
MSDeploy.RequestId: 50de0746-f10d-4640-9b3d-4ba773520e38
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
Skip: objectName="^configProtectedData$"
Provider: auto, Path:
Tracing deployment agent exception. Request ID '50de0746-f10d-4640-9b3d-4ba773520e38'. Request Timestamp: '5/12/2011 9:18:12 AM'. Error Details:
Microsoft.Web.Deployment.DeploymentDetailedUnauthorizedAccessException: Unable to perform the operation ("Create Directory")
for the specified directory ("C:\inetpub\wwwroot\bin"). This can occur if the server administrator has not authorized this
operation for the user credentials you are using.
---> Microsoft.Web.Deployment.DeploymentException: The error code was 0x80070005. ---> System.UnauthorizedAccessException:
Access to the path 'C:\inetpub\wwwroot\bin' is denied.
at Microsoft.Web.Deployment.Win32Native.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode, String maybeFullPath)
at Microsoft.Web.Deployment.DirectoryEx.CreateDirectory(String path)
at Microsoft.Web.Deployment.DirPathProvider.CreateDirectory(String fullPath, DeploymentObject source)
at Microsoft.Web.Deployment.DirPathProvider.Add(DeploymentObject source, Boolean whatIf)
--- End of inner exception stack trace ---
--- End of inner exception stack trace ---
Ce message vous indique où les autorisations doivent être accordées pour cette erreur particulière. Vous pouvez également voir l’erreur d’autorisations suivante dans Visual Studio :
Web deployment task failed.((5/12/2011 11:31:41 AM) An error occurred when the request was processed on the remote computer.)
(5/12/2011 11:31:41 AM) An error occurred when the request was processed on the remote computer.
The server experienced an issue processing the request. Contact the server administrator for more information.
Cette erreur particulière ne vous donne pas beaucoup de temps, mais l’image devient plus claire si vous examinez le journal des erreurs Web Deploy dans observateur d'événements.
User: DEPLOYSERVER\User1
Client IP: 192.168.0.203
Content-Type: application/msdeploy
Version: 8.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 7.1.1070.1
MSDeploy.Method: Sync
MSDeploy.RequestId: 63b2f3d1-1817-444f-8280-9fa4f6f85d53
MSDeploy.RequestCulture: en-US
MSDeploy.RequestUICulture: en-US
Skip: objectName="^configProtectedData$"
Provider: auto, Path:
Tracing deployment agent exception. Request ID '63b2f3d1-1817-444f-8280-9fa4f6f85d53'. Request Timestamp: '5/12/2011 9:31:41 AM'. Error Details:
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path)
at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf)
at Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
at Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
À partir de cette sortie, nous pouvons voir que User1
n’a pas les droits nécessaires pour définir des informations de sécurité. Dans ce cas, l’utilisateur ne dispose pas des « autorisations de modification » sur le contenu. L’octroi d’autorisations de modification au contenu résout le problème.
Autres
Si vous ne pouvez pas parcourir une application .NET 4.0 après sa publication, il se peut que .NET 4.0 n’ait pas été inscrit correctement auprès d’IIS. D’autres symptômes sont que .NET 4.0 est installé, mais qu’il n’existe pas de pools d’applications .NET 4.0 ou de mappages de gestionnaires dans IIS. Cela se produit lorsque .NET 4.0 est installé avant l’installation d’IIS. Pour résoudre ce problème, démarrez une invite de commandes avec élévation de privilèges et exécutez cette commande :
%systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru