web-dev-qa-db-fra.com

Comment attacher le débogueur à IIS au lieu du serveur de développement ASP.NET?

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 à la place lorsque j'appuie sur F5?

68
hmak

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

Cela démarre en fait une instance de l'application dans IIS et attache le débogueur. Si vous vouliez uniquement attacher à une instance IIS existante, choisissez attacher pour traiter à partir de le menu de débogage.

50
StingyJack

Débogage-> Attacher au processus ...

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 quelle application piscine que vous frappez, vous devrez les attacher à tous).

96
ckramer

Debug -> Attach to Process dans le menu VS.

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

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

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 accès au gestionnaire de tâches (taskmgr.exe), vous pouvez y voir directement le nom du processus ainsi que l'ID du processus, et dans la plupart des cas, la colonne "nom d'utilisateur" du processus sera la même que 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 d'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 s'est arrêté en raison d'un temps d'inactivité, vous devez d'abord utiliser le site afin de faire apparaître le processus dans la liste.

De plus, si l'application est un "Web Garden" (qui possède plusieurs w3wp.exe), même après avoir attaché le bon processus, il n'y a toujours aucune garantie que les points d'arrêt seront atteints, car le trafic vers le site peut être dirigé vers un autre processus.

Notez également que si vous vous connectez à une application qui s'exécute en mode édition, elle s'exécutera désormais en mode débogage, ce qui signifie par exemple qu'il n'y aura pas de limitations de délai d'expiration (ce qui pourrait être un peu un problème si vous essayez réellement de résoudre une erreur de temporisation).


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

  1. Assurez-vous que le pare-feu ne bloque pas en ouvrant les ports appropriés ou en le désactivant complètement (n'oubliez pas de le réactiver une fois terminé).
  2. Vous devez avoir un compte de domaine Windows avec des privilèges administratifs sur la machine distante ou avoir un compte - avec le même nom d'utilisateur et le même mot de passe que la machine locale qui exécute VS - sur la machine distante.
  3. Sur la machine sur laquelle VS est installé, accédez à (Chemin d'installation de Visual Studio)\Microsoft Visual Studio (numéro de version actuel)\Common7\IDE\Remote Debugger (Version de machine distante), copiez et collez ce dossier sur la machine distante ou partagez-le afin 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) à partir de là, accédez au dossier copié ou partagé de l'étape 3, et cliquez avec le bouton droit sur "msvsmon.exe" et dans le menu contextuel, sélectionnez "Exécuter en tant que Administrateur".
  5. Le moniteur distant doit démarrer et déclarer qu'il a démarré un serveur généralement sous le nom de (utilisateur) @ (machine distante) 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, la liste des processus sur la machine distante s'affichera.

Bien sûr, il y a beaucoup plus dans ce sujet, et pour le débogage du code natif, le processus peut ê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 le MSDN, ainsi que de nombreux messages sur ce site.

J'espère que cela vous aidera.

11
yoel halb

Ou vous pouvez utiliser l'un des attachements à IIS à Visual Studio.

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

7
Jon Adams

accédez aux propriétés de l'application Web. Sélectionnez la section "Options de démarrage" et passez de "Utiliser le serveur Web par défaut" à "Utiliser un serveur personnalisé". Entrez " http: // localhost " dans l'url de base.

(suppose VS 2008)

6
Danimal