Comment attacher le débogueur à IIS au lieu d’ASP.NET Development Server?

J’ai un site Web ASP.NET et lorsque j’appuie sur F5, il se connecte automatiquement au serveur de développement ASP.NET. Comment puis-je attacher au processus de travail IIS au lieu d’appuyer sur F5?

Ouvrez les propriétés du projet, accédez à l’onglet Web et choisissez l’option pour IIS.

Cela démarre en réalité une instance de l’application dans IIS et attache le débogueur. Si vous souhaitez uniquement attacher à une instance IIS existante, choisissez l’attachement au processus dans le menu de débogage.

Debug-> Attach To Process …

Sélectionnez le processus aspnet_wp.exe dans la liste.

Si vous exécutez IIS> version 5, le processus sera w3wp.exe , et il y en aura un pour chaque pool d’applications (donc, si vous ne savez pas quel pool d’applications vous touchez, vous devrez vous connecter à tous d’eux).

Debug -> Attach to Process du menu VS.

Pour savoir à quel processus w3wp.exe se connecter, vous pouvez utiliser la commande suivante sur un serveur 2008

 c:\%systemroot%\system32\inetsrv\appcmd list wp 

Alors que sur Windows 2003, il est

 c:\%systemroot%\system32\cscript iisapp.vbs 

Pour plus d’informations, voir PID du pool d’applications IIS .

Cependant, si vous avez access au gestionnaire de tâches (taskmgr.exe), vous pouvez y voir directement le nom du processus avec l’ID de processus et, dans la plupart des cas, la colonne “nom d’utilisateur” du processus sera identique à celle de l’application. nom du pool, (bien sûr, vous devez définir ces colonnes pour qu’elles soient visibles dans le gestionnaire de tâches afin de pouvoir afficher les informations).

Mais notez que toutes les méthodes afficheront uniquement les processus en cours d’exécution, ce qui signifie que si votre processus particulier a été arrêté en raison d’un temps d’inactivité, vous devez d’abord utiliser le site pour mettre le processus dans la liste.

Aussi, si l’application est un “Web Garden” (qui a plus d’un w3wp.exe), même après avoir attaché au bon processus, il n’y a toujours aucune garantie que les points d’arrêt seront atteints, car le trafic vers le site pourrait être dirigé vers un autre processus.

Notez également que si vous vous connectez à une application qui s’exécute en mode de publication, il s’exécutera désormais en mode débogage, ce qui signifie par exemple qu’il n’y aura pas de limite de délai d’attente (ce qui pourrait poser problème si vous essayez de résoudre une erreur de délai d’attente).

Si vous souhaitez attacher à un processus distant, voici la meilleure pratique:

  1. Assurez-vous que le pare-feu ne bloque pas en ouvrant les ports correspondants ou en le désactivant complètement (n’oubliez pas de le réactiver lorsque vous avez terminé).
  2. Vous devez avoir un compte de domaine Windows avec des privilèges d’administrateur sur l’ordinateur distant ou avoir un compte – avec le même nom d’utilisateur et mot de passe que l’ordinateur local qui exécute VS – sur l’ordinateur distant.
  3. Sur l’ordinateur sur lequel VS est installé, accédez à (Chemin d’installation de Visual Studio) \ Microsoft Visual Studio (numéro de version actuel) \ Common7 \ IDE \ Débogueur distant (version de machine distante), copiez et collez ce dossier sur l’ordinateur distant ou partagez-le. dossier pour qu’il soit accessible depuis la machine distante.
  4. Sur la machine distante, connectez-vous en tant que même utilisateur que la machine locale (voir l’étape 2), puis accédez au dossier copié ou partagé de l’étape 3, puis cliquez avec le bouton droit sur “msvsmon.exe”. Administrateur”.
  5. Le moniteur distant doit démarrer et prétendre qu’il a démarré un serveur généralement par le nom de (utilisateur) @ (ordinateur distant) ou tout autre nom.
  6. Dans VS, sélectionnez Debug -> Attach To Process dans le menu, laissez le transport sur “Default” et, pour le “Qualifier Name”, entrez le nom de l’étape 5.
    Si tout se passe correctement, cela affichera la liste des processus sur la machine distante.

Bien sûr, il y a beaucoup plus dans ce sujet, et pour déboguer du code natif, le processus pourrait être encore plus simple, mais les étapes que j’ai énumérées ici devraient fonctionner dans tous les cas.

Pour plus d’informations, vous pouvez consulter http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx ou sur MSDN, ainsi que de nombreux articles sur ce site.

J’espère que cela aidera.

Vous pouvez également utiliser l’ un des plug-ins Attacher à IIS à Visual Studio.

Mon extension préférée est VSCommands (pour VS 2010 – 2012 ou 2013 , mais pas encore 2015) ou ReAttach (fonctionne en 2017).

Accédez aux propriétés de l’application Web. Sélectionnez la section “Options de démarrage” et remplacez “Serveur Web par défaut USe” par “Utiliser un serveur personnalisé”. Entrez ” http: // localhost ” dans l’URL de base.

(suppose VS 2008)