Résoudre les problèmes liés au déploiement web 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’est pas 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 MVC ASP.NET dans Visual Studio. Le serveur de destination était une nouvelle installation de Windows Server 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 192.168.0.211:8172
Le texte mis en surbrillance dans cette erreur (et les autres erreurs dans les sections suivantes) est la clé de la compréhension de la nature du problème. Web Deploy n’a pas reçu de réponse à partir 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 de nom de l’ordinateur. Dans la vue Fonctionnalités , faites défiler jusqu’à la section Gestion et recherchez ces icônes :
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 sous l’onglet Produits. Sélectionnez Le serveur dans la colonne de gauche, puis sélectionnez IIS : Service de gestion.
Note
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 ce paramètre peut être modifié. Le moyen le plus simple de vérifier le port utilisé consiste à ouvrir le volet Service de gestion comme décrit précédemment et à examiner les informations d’adresse IP et de port dans la section Connexions. Si le port a été remplacé 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 trompeur. Il indique que le serveur n’a pas répondu, mais que l’erreur 403 indique que Web Deploy peut contacter le serveur, mais que la demande a été refusée activement. Le journal HTTP du service de gestion web peut vous aider à confirmer que la requête a atteint le serveur et à fournir des détails sur la requête réelle qui a échoué. Ce journal se trouve à %SystemDrive%\Inetpub\logs\WMSvc
par défaut. Comme d’autres journaux IIS, les données ne sont pas écrites immédiatement dans le journal. Vous devrez 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, vous pouvez voir le message suivant :
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
Une 6
fois que le 403
journal est le code de sous-état, cela signifie que l’adresse IP a été rejetée. Une liste complète des codes d’état et de sous-état pour IIS est disponible dans les codes d’état HTTP dans IIS.
Le service de gestion est-il configuré pour autoriser les connexions distantes ?
C’est la raison la plus probable de la réponse 403.6. Double-cliquez sur l’icône Service de gestion et vérifiez que l’option Activer les connexions à 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é par le biais du 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 (HTTP Traffic-In). Vérifiez que cette règle est activée en accédant au >Pare-feu Windows d’AdministrationTools>avec Advanced Security. Sélectionnez Règles de trafic entrant et recherchez la règle de gestion web dans la liste. Elle doit être activée 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.
Les restrictions IP ont-elles été configurées pour le service de gestion ?
L’autre raison courante pour laquelle vous pouvez obtenir une erreur 403 est que 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 distantes sont autorisées. Vous pouvez vérifier 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 qu’il n’a pas pu trouver ce dont il a besoin. La première chose à faire est de confirmer à quelle ressource Web Deploy a essayé de se connecter. Si vous examinez 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 à celle-ci :
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 4.0 dans la liste des programmes installés. Si ce n’est pas le cas, vous pouvez le télécharger et l’installer à partir de la page de téléchargement officielle. Vous devez également vous assurer que Web Deployment Agent Service (MsDepSvc) (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, vérifiez que la fonctionnalité gestionnaire de déploiement IIS dans Web Deploy est installée. Dans le panneau de configuration Programmes et fonctionnalités, recherchez Microsoft Web Deploy 4.0, cliquez dessus avec le bouton droit et sélectionnez Modifier. Dans l’Assistant qui s’affiche, sélectionnez Suivant sur la première page, puis sélectionnez Modifier sur la deuxième page. Ajoutez le gestionnaire de déploiement IIS et tout ce qui se trouve sous celui-ci.
Sélectionnez Suivant pour terminer l’Assistant. Vous devez redémarrer le service de gestion web après avoir apporté cette modification.
(401) Non autorisé
Une fois le déploiement web et le service de gestion web 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, il existe plusieurs erreurs différentes que vous pouvez voir 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 statut http mis en surbrillance dans la sortie de Visual Studio est une erreur Accès refusé. L’état Win32 mis en surbrillance dans le journal des erreurs correspond à « Échec de connexion : nom d’utilisateur inconnu ou mot de passe incorrect », de sorte que cette erreur est une simple défaillance d’ouverture de session. Si l’utilisateur est authentifié mais n’a pas les 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 de Configuration du gestionnaire de déploiement web.
Opération non autorisée
Si le compte est en mesure de se connecter mais 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 Event Viewer (Local)>Applications and Services Logs>Microsoft Web Deploy.
Pour cette erreur particulière, le journal des événements contient des détails supplémentaires (tronqués pour la 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 détails, mais l’image devient plus claire si vous examinez le journal des erreurs Web Deploy dans l’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
les droits de définition des informations de sécurité ne sont pas autorisés. Dans ce cas, l’utilisateur n’a pas « Modifier les autorisations » sur le contenu. Le fait d'accorder des « autorisations de modification » au contenu résout le problème.
Autres
Si vous ne pouvez pas parcourir une application .NET 4.0 une fois que vous l’avez correctement publiée, il peut s’agir que .NET 4.0 n’est pas inscrit correctement auprès d’IIS. D'autres symptômes indiquent que .NET 4.0 est installé, mais qu'il n'y a pas de pools d'applications ou de mappages de gestionnaires .NET 4.0 dans IIS. Ce symptôme 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 la commande suivante :
%systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru