10
votes

Est-il possible de déboguer une application Web ASP.NET qui n'est pas démarrée à partir de Visual Studio?

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.

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:

  • Quels paramètres dois-je modifier dans la configuration de mon application Web?
  • Quels "paramètres de paquet / publication" dois-je changer?
  • Y a-t-il quelque chose que je dois changer dans IIS?
  • Y a-t-il quelque chose de spécial que je dois faire dans l'écran "Joindre au processus"?

    informations de base: je cours Visual Studio 2010 sur Windows XP SP3 avec IIS 5.1 et .NET 4.0.


    Informations supplémentaires:

    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.


2 commentaires

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.


6 Réponses :


1
votes

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.

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 (IIS 5.1, 6.0) ou AppCMD List WP (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 .


0 commentaires

5
votes

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.


1 commentaires

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.



0
votes

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.


0 commentaires

1
votes

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.

HIT F5, fonctionnera dans IIS.


0 commentaires

4
votes

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:

  1. Créez un nouveau dossier pour votre application sur votre disque dur local qui sera utilisé pour votre application Web.
  2. Créez manuellement un nouveau répertoire virtuel dans IIS qui pointe vers le dossier que vous avez créé.
    • Assurez-vous que les propriétés du site Web ou les propriétés du répertoire virtuel dans IIS sont définies pour utiliser ASP.NET 4.0 si vous utilisez une application Web .NET 4.0.
    • dans VS 2010, cliquez avec le bouton droit de la souris sur votre projet Web et cliquez sur "Publier". Utilisez les paramètres suivants:
      • Méthode de publication: Webploy
      • Service URL: http: // localhost
      • Site / Application: Nom du site Web IIS / Directory virtuel
        • 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 . Par exemple, si vous avez appelé votre répertoire virtuel mysolution.myproject , vous spécifieriez site Web par défaut / mysolution.myproject comme site / application.
        • Marque en tant qu'application IIS sur la destination: je laisse ceci non contrôlé.
        • laissez des fichiers supplémentaires sur la destination (ne pas supprimer): je laisse actuellement ce non coché.
        • 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 compile
            • Cliquez sur le bouton "Options de compilation avancé ..." (j'utilise vb.net; cela pourrait être légèrement différent dans C #).
            • Assurez-vous que "Générer des informations de débogage" est défini sur plein . (Il y a aussi une option pour PDB-seulement , que je n'ai pas essayé. Cela pourrait fonctionner aussi bien).
            • dans l'onglet Web :
              • Sous les serveurs , choisissez Utiliser le serveur Web personnalisé et spécifier l'adresse de votre nouvelle application; Par exemple: http: // localhost / virtuelDirectory . . .
              • 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.
              • dans l'onglet package / Publier Web>
                • Vous devriez pouvoir utiliser le paramètre uniquement des fichiers nécessaires pour exécuter cette application pour éléments à déployer ... . .
                • Assurez-vous que Exclure les symboles de débogage générés 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.

                    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:

                    1. Cliquez avec le bouton droit de la souris sur votre projet Web et cliquez sur Publier .
                      • Assurez-vous que vos paramètres sont toujours définis à partir de l'étape 3 ci-dessus.
                      • Cliquez sur le bouton publier . Cela construira automatiquement l'application en fonction de la configuration de construction actuelle et de le publier l'hôte Web spécifié.
                      • Allez-y et accédez à l'une des pages de votre application Web pour vous assurer que l'application démarre.
                      • in vs 2010, cliquez sur le menu débogage et choisissez joindre au processus . Sélectionnez le processus ASP.NET qui s'exécute (sous Windows XP, c'est aspnet_wp.exe ) et cliquez sur Joindre . .
                      • 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.

                        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.


0 commentaires

0
votes

Je sais que vous résolvez votre problème, mais peut-être que cela aidera les autres.

Débogage avec "attacher au processus" dans VS:
  1. Ouvrir vs
  2. aller à "débogage"
  3. et choisissez "Joindre au processus"

    * Les étapes 2 et 3 peuvent être remplacées par le raccourci clavier Ctrl + ALT + P

    1. Une fenêtre avec la liste des processus est ouverte
    2. Recherchez le processus "W3WP" (s'il n'est pas répertorié> CHCK la case à cocher "Afficher les processus de tous les utilisateurs"

      * 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.

      1. Choisissez le processus W3WP dans la liste

      2. Cliquez sur le bouton "Joindre"


        Dans le projet, placez un point de rupture dans le code où vous souhaitez déboguer.

        Si vous voyez un point de rupture de couleur rouge mais la couleur interne est blanche Entrez la description de l'image ici et lorsque vous le survolez, ce message apparaît:

        Le point d'arrêt ne sera pas actuellement frappé. Aucun symbole n'a été chargé Pour ce document.

        Cela signifie que les symboles non chargés = le dll droit / mis à jour> n'a pas été chargé! Construire le projet> Accédez au dossier "Bin" et copiez le droit dll (projectname.dll) + copiez-le (projetName.pdb), pdb est comme une carte Pour cette dll.

        Copiez ces 2 fichiers dans le dossier de site Web du système de fichiers (il y aura un dll avec le même nom - remplacez-le et ajoutez le fichier pdb également.

        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é.


0 commentaires