Le serveur Web asp.net par défaut qui se lance à partir de Visual Studio (Casini) est un peu de buggy sur ma machine de développement. J'aime donc publier une instance IIS locale sur ma machine de développement et consulter l'application Web là-bas. Cependant, je ne suis pas automatiquement en "mode de débogage" lorsque je lance l'application de cette façon. P>
Je sais que vs 2010 a une fonctionnalité de débogage "attachée à traiter", mais je ne sais pas exactement comment l'utiliser. Que dois-je faire pour pouvoir déboguer une application Web locale IIS ASP.NET à partir de Visual Studio? Plus précisément: p>
informations de base: je cours Visual Studio 2010 sur Windows XP SP3 avec IIS 5.1 et .NET 4.0. EM> P>
Informations supplémentaires: P>
Je devrais ajouter que j'ai essayé de joindre à aspnet_wp.exe, mais quand je vais sur une page que je connaisse a un point d'arrêt, je reçois le message suivant lorsque je survole sur le point d'arrêt "Open Circle": < / p>
Le point d'arrêt ne sera pas actuellement frappé. Aucun symbole n'a été chargé pour ce document. P>
blockQuote>
6 Réponses :
Je développe également mes applications Web sur un IIS local. Pour le débogage de l'IIS local, F5 a toujours travaillé pour moi. P>
Si vous devez utiliser Joindre au processus, assurez-vous de la raison, assurez-vous que vous attachez à un processus local ou que le débogueur distant est en cours d'exécution sur la machine distante. L'application doit être renvoyée à l'avance, par exemple, en demandant une page dans un navigateur. Utilisez iisapp code> (IIS 5.1, 6.0) ou
AppCMD List WP CODE> (IIS 7+) Pour déterminer quel ID de processus appartient à quel pool d'applications (seulement nécessaire si vous avez plus de 2 applications piscines, vraiment), puis obtenez-vous avec Joindre au processus . p>
al vous devez faire est d'utiliser une attache à traiter et cible aspnet_wp.exe. Il pourrait éventuellement être w3wp.exe en fonction de la saveur du système d'exploitation. J'avais une macro pour le faire, mais elle a cessé de fonctionner après VS2008. P>
Merci d'avoir répondu. J'ai essayé de joindre à aspnet_wp.exe, mais cela ne semble pas s'arrêter à mes points d'arrêt. J'ai mis à jour ma question avec plus d'informations.
Je n'ai jamais fait de paramètres spéciaux et que le gadget de traitement fonctionne très bien. Joindre juste au processus aspnet_wp.exe et y aller. P>
Cliquez avec le bouton droit de la souris sur votre projet Web dans VS, accédez aux options de démarrage et choisissez Utiliser le serveur personnalisé, collez dans l'adresse locale que vous avez pour votre site dans IIS. P>
HIT F5, fonctionnera dans IIS. P>
Je n'étais pas jamais obligé de le faire fonctionner avec F5 dans Visual Studio, même lorsqu'il a été configuré pour déployer sur le serveur IIS local. Je ne sais pas quel était exactement le problème, mais j'ai finalement pu l'amener à travailler dans une mode beaucoup plus "manuelle". Une grande partie de l'obtention de cela au travail est de vous assurer que vous générez des symboles de débogage et de les déployer sur votre site Web. Voici les étapes que j'ai prises pour finir par le faire: p>
Nom du site Web IIS code> / Directory virtuel code> em>
- Vous devez spécifier le nom du site Web IIS suivi du nom du répertoire virtuel que vous venez de spécifier. Le nom par défaut du site Web est généralement simplement site Web par défaut em>. Par exemple, si vous avez appelé votre répertoire virtuel mysolution.myproject em>, vous spécifieriez site Web par défaut / mysolution.myproject em> comme site / application. Li>
ul> li>
- Marque en tant qu'application IIS sur la destination: je laisse ceci non contrôlé. Li>
- laissez des fichiers supplémentaires sur la destination (ne pas supprimer): je laisse actuellement ce non coché. li>
ul> li>
- dans VS 2010, cliquez avec le bouton droit de la souris sur votre projet Web et choisissez "Propriétés". Utilisez les paramètres suivants:
- dans l'onglet em> compile em>
- Cliquez sur le bouton "Options de compilation avancé ..." (j'utilise vb.net; cela pourrait être légèrement différent dans C #). LI>
- Assurez-vous que "Générer des informations de débogage" est défini sur plein em>. (Il y a aussi une option pour PDB-seulement em>, que je n'ai pas essayé. Cela pourrait fonctionner aussi bien). LI>
ul> li>
- dans l'onglet Web em>:
- Sous les serveurs em>, choisissez Utiliser le serveur Web personnalisé em> et spécifier l'adresse de votre nouvelle application; Par exemple: http: // localhost / virtuelDirectory em>. li>. Li>.
- note: puisque je n'ai pas fini par déboguer de l'application à l'aide de F5, je ne suis pas sûr que je devais faire cette étape. em> li>
ul> li>
- dans l'onglet package / Publier Web>
- Vous devriez pouvoir utiliser le paramètre uniquement des fichiers nécessaires pour exécuter cette application em> pour éléments à déployer ... em>. li>.
- Assurez-vous que Exclure les symboles de débogage générés em> est décoché.
- Remarque: Pour des raisons de sécurité, vous ne voudriez probablement pas déployer des informations de débogage dans un environnement de production sauf absolument nécessaire. em> li>
ul> li>
ul> li>
ul> li>
ol>
Après avoir terminé ce qui précède, vous devez être prêt à déployer votre application afin de pouvoir être débigués. Voici les étapes que j'utilise pour déployer et déboguer ultérieurement l'application: p>
- Cliquez avec le bouton droit de la souris sur votre projet Web et cliquez sur Publier em>.
- Assurez-vous que vos paramètres sont toujours définis à partir de l'étape 3 ci-dessus. Li>
- Cliquez sur le bouton publier em>. Cela construira automatiquement l'application en fonction de la configuration de construction actuelle et de le publier l'hôte Web spécifié. LI>
ul> li>
- Allez-y et accédez à l'une des pages de votre application Web pour vous assurer que l'application démarre. LI>
- in vs 2010, cliquez sur le menu débogage em> et choisissez joindre au processus em>. Sélectionnez le processus ASP.NET qui s'exécute (sous Windows XP, c'est aspnet_wp.exe em>) et cliquez sur Joindre em>. Li>.
- Vous devriez maintenant pouvoir ajouter des points d'arrêt à votre code qui incendierez lorsque vous naviguez vers différentes pages de votre application Web à partir du navigateur. LI>
ol>
Alors que cette méthode fonctionne bien, gardez à l'esprit que ce n'est pas simplement attaché à votre environnement de développement local. Si un autre utilisateur sur un ordinateur différent était d'accéder à l'application Web, je pense que les points d'arrêt incendient toujours aussi longtemps que vous débranchez le processus. P>
Je sais que vous résolvez votre problème, mais peut-être que cela aidera les autres. P>
* Les étapes 2 et 3 peuvent être remplacées par le raccourci clavier Ctrl + ALT + P P>
* S'il y en a plus d'un, vous pouvez les sélectionner tous ou (pour connaître le bon) Ouvrez IIS et cliquez sur le bouton droit de la souris sur le site Web que vous souhaitez déboguer> "Gérer l'application"> "Paramètres avancés ..."> Look Pour le "pool d'applications" de la ligne, dans l'onglet à côté d'elle, le nom du pool d'applications utilisée est écrit. P>
Choisissez le processus W3WP dans la liste P> li>
Cliquez sur le bouton "Joindre" P> LI> ol>
Dans le projet, placez un point de rupture dans le code où vous souhaitez déboguer. p>
Si vous voyez un point de rupture de couleur rouge mais la couleur interne est blanche et lorsque vous le survolez, ce message apparaît: p>
Le point d'arrêt ne sera pas actuellement frappé. Aucun symbole n'a été chargé Pour ce document. p> blockQuote>
Cela signifie que les symboles non chargés = le
dll droit / mis à jour> code> n'a pas été chargé! Construire le projet> Accédez au dossier "Bin" et copiez le droit
dll code> (projectname.dll) + copiez-le (projetName.pdb),
pdb code> est comme une carte Pour cette dll. p>
Copiez ces 2 fichiers dans le dossier de site Web du système de fichiers (il y aura un
dll code> avec le même nom - remplacez-le et ajoutez le fichier
pdb code> également. p>
ALORS Joindre le processus à nouveau comme vous l'avez fait auparavant - maintenant, le point de rupture doit être entièrement rouge et lorsque vous chargez le site Web, le point de rupture sera touché. P>
Dans les paramètres du projet dans l'onglet Web, il est correctement défini pour utiliser le serveur Web IIS local? Aussi avez-vous construit immédiatement avant de tenter de joindre?
@Chris Je n'ai pas eu à l'origine le projet défini pour utiliser le serveur Web IIS local, mais maintenant je le fais. J'ai passé immédiatement construire avant de tenter de m'attacher. Je vais faire de plus en plus de creuser.