70 votes

Comment puis-je 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 me connecter au processus de travail IIS lorsque j'appuie sur F5 ?

0 votes

Pour tous ceux qui cherchent le processus à suivre pour déboguer des applications ASP.NET, il s'agit de iisexpress.exe

97voto

ckramer Points 7315

Debug->Attacher au processus...

Sélectionnez le aspnet_wp.exe de la liste.

Si vous êtes en train de courir IIS > version 5 le processus sera w3wp.exe 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 attacher à tous les pools).

2 votes

C'est la méthode que je préfère, car elle évite l'ouverture d'une nouvelle fenêtre et permet de conserver l'état de la session dans un navigateur ouvert.

3 votes

W3wp.exe également pour IIS 6 (dans Server 2003)

0 votes

Qu'est-ce que cela signifie si le processus w3wp n'est pas dans la liste ? il était juste là. puis j'ai fait un iisrest et il a disparu.

50voto

StingyJack Points 10956

Ouvrez les propriétés du projet, allez à l'onglet web et choisissez l'option pour IIS.

Cela permet de démarrer une instance de l'application dans IIS et d'attacher le débogueur. Si vous voulez seulement attacher à une instance IIS existante, choisissez attacher au processus dans le menu de débogage.

1 votes

Cela ne fonctionne que pour les serveurs IIS locaux, n'est-ce pas ? On ne peut pas déployer/exécuter/attacher un processus de travail sur un serveur IIS distant de cette façon ? (Je pose la question, car j'aimerais pouvoir le faire, mais je n'ai pas trouvé de méthode raisonnable pour le faire).

1 votes

Oui, local seulement. Je pense que pour faire ce que vous recherchez, il vous faudrait publier le site, puis attacher le processus sur la machine distante. Cela nécessite l'installation d'un débogueur à distance et probablement quelques problèmes de sécurité. Pas amusant....

2 votes

Joindre les mensonges du processus dans le menu "Outils".

11voto

yo hal Points 1949

Debug -> Attach to Process dans le menu VS.

Afin de savoir à quel processus w3wp.exe se rattacher, vous pouvez utiliser la commande suivante sur un serveur 2008

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

Alors que sous Windows 2003, c'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 des 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 le nom du pool d'applications (bien sûr, vous devez configurer ces colonnes pour qu'elles soient visibles dans le gestionnaire des tâches afin d'afficher les informations).

Mais notez que toutes les méthodes n'affichent que 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 remonter le processus dans la liste.

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

Notez également que si vous vous attachez à une application qui s'exécute en mode "release", elle s'exécutera désormais en mode "debug", ce qui signifie par exemple qu'il n'y aura pas de limitation de temps (ce qui peut poser problème si vous essayez de résoudre une erreur de temps).

Si vous voulez vous attacher à 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 lorsque vous avez 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 mot de passe que la machine locale qui exécute VS - sur la machine distante.

  3. Sur la machine où VS est installé, naviguez jusqu'à (chemin d'installation de Visual Studio). \Microsoft Visual Studio (numéro de version actuel) \Common7\IDE\Remote Debugger(Remote Machine Version), et copiez et collez ce dossier sur la machine distante ou partagez ce dossier 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). De là, naviguez vers le dossier copié ou partagé de l'étape 3, et faites un clic droit sur "msvsmon.exe" et dans le menu contextuel, sélectionnez "Exécuter en tant qu'administrateur".

  5. Remote Monitor doit démarrer et déclarer qu'il a démarré un serveur habituellement 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, cela fera apparaître la liste des processus sur la machine distante.

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

Pour plus d'informations, vous pouvez consulter le site suivant 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.

7voto

Jon Adams Points 8637

Ou vous pouvez utiliser un des plugins Attach to IIS à Visual Studio.

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

6voto

Danimal Points 5721

Allez dans les propriétés de l'application web. Sélectionnez la section "Start Options", et passez de "USe default web server" à "use custom server". Entrez " http://localhost "dans l'url de base.

(suppose VS 2008)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X