web-dev-qa-db-fra.com

Visual Studio 2013 n'atteignant pas les points d'arrêt

Je travaille avec une solution ASP.NET dans Visual Studio 2013 qui ne parvient pas à atteindre les points d'arrêt. Visual Studio atteindra avec succès les points d'arrêt sur d'autres solutions et les points d'arrêt de cette solution précédemment ont fonctionné. Mais à ce moment-là, ils ne fonctionnent pas.

J'utilise Visual Studio 2013 Ultimate, Update 4. Ceci est installé sur Windows 8.1, 64 bits.

Il s'agit d'une solution MVC contenant 3 projets: BusinessEntities, DataAccessLayer (DAL) et un projet Web. Les points d'arrêt dans tous ces projets ne fonctionnent pas. J'ai même essayé un point d'arrêt à l'intérieur de l'index ActionResult pour le contrôleur domestique et ce dernier n'a toujours pas réussi à s'arrêter au point d'arrêt.

Dans le ruban Visual Studio, la configuration de la solution est définie sur Debug. En outre, Configuration Manager indique que la configuration de Debug est configurée sur mes 3 projets. Le redémarrage d'IIS, le redémarrage de Visual Studio et le redémarrage n'ont pas résolu ce problème. Sélectionner Construire> Nettoyer la solution, Construire> Reconstruire, puis Déboguer> Démarrer le débogage ne le réglait pas non plus.

Dans web.config, le débogage est défini sur true dans ce nœud:

  <system.web>
      <compilation debug="true" targetFramework="4.0" />

Il y a des fichiers .pdb dans les répertoires bin de mes projets. J'ai vérifié qu'ils étaient supprimés lors du nettoyage de la solution et recréés lors de sa reconstruction.

Quoi d'autre dois-je vérifier? J'ai vraiment besoin que les points d'arrêt fonctionnent dans cette solution. Merci.

========

Mises à jour le 30/12/2014 - Voici plusieurs choses que j'ai essayées, à la suite des commentaires de @ paul.abbott.wa.us. Plusieurs commentaires que j'ai faits sont supprimés et simplement ajoutés ici pour plus de clarté.

========

Je démarre l'application via VS et je l'exécute sous IIS. La version de IIS est 8.5. Lors de l'exposition du nom du processus (via System.Diagnostics.Process.GetCurrentProcess (). ProcessName), c'est w3wp.

Dans IIS, l'application Web a un nom de site tel que "local.mysite" et une entrée correspondante se trouve dans mon fichier hosts. Le site utilise le DefaultAppPool, qui utilise la version 4.0 du .NET CLR et le mode de pipeline géré intégré. Les 3 applications de ma solution cible .NET Framework 4.

Si je reviens à IIS Express, le débogueur commence à fonctionner. La version de IIS passe à la version 8.0 et le nom du processus est bien sûr iisexpress. Techniquement, je n'ai pas besoin de l'exécuter sous IIS sur mon poste de travail, mais je préférerais le faire. Qu'est-ce que j'ai mal configuré ou oublié dans IIS qui pourrait expliquer l'échec du débogueur?

En examinant les paramètres du serveur de projet sur l’onglet Web de la page de propriétés, j’ai remarqué que la liste déroulante était configurée sur «IIS Express». Après avoir basculé sur "IIS local", on m'a invité à exécuter VS en tant qu'administrateur. Après cela, j'ai pu modifier le serveur en IIS local et lancer le débogueur. J'ai vérifié la modification, fermé VS, lancé VS ne fonctionnant pas en tant qu'administrateur et chargé la solution. Le projet Web n'a pas pu être chargé avec le message suivant: Le projet d'application Web [MySiteName] est configuré pour utiliser IIS. Impossible d'accéder à la métabase IIS. Vous ne disposez pas des privilèges suffisants pour accéder à IIS sites Web sur votre ordinateur.

À terme, certaines sections de ce site utiliseront l’authentification Active Directory. La solution dont j’ai besoin est-elle d’exécuter le site sous IIS Express ou d’exécuter toujours VS en tant qu’administrateur si je souhaite exécuter le site sous IIS? Merci.

J'ai trouvé une solution pour surmonter le message d'erreur suivant: «Le projet d'application Web [MyApp] est configuré pour utiliser IIS. Impossible d'accéder à la métabase IIS. Vous ne disposez pas des privilèges suffisants pour accéder aux sites Web IIS sur votre ordinateur. ”Suivez les étapes de ce message. Erreur - Impossible d'accéder à la métabase IIS

Après avoir autorisé mon compte à accéder au dossier intetsrv\config, le projet Web a été chargé correctement dans Visual Studio sans exécuter VS en tant qu'administrateur.

Mais maintenant, lorsque je lance le site, une autre alerte apparaît: «Impossible de démarrer le débogage sur le serveur Web. IIS ne répertorie pas un site Web correspondant à l'URL lancée. Cliquez sur Aide pour plus d'informations. »Au départ, je viens de cliquer sur« Créer un répertoire virtuel », puis de le relancer, mais cette même alerte est réapparue.

J'ai donc sélectionné le bouton Aide de l'alerte. Cela conduit à cette page MSDN , qui propose environ deux douzaines de points à vérifier, avec environ la moitié moins de liens vers d’autres articles. Je me sens un peu comme Alice au pays des merveilles en ce moment, descendant plus loin dans le terrier du lapin.

Mise à jour du 2/3/2015: ma solution de contournement lors de l'exécution de cette opération sur l'instance locale IIS consistait à exécuter Visual Studio en tant qu'administrateur. En fin de compte, nous avons modifié l’application pour utiliser IIS Express, puis l’avons abandonnée pour une autre solution créée par un collègue. Cette décision n'a rien à voir avec ce problème. Merci à tous pour vos commentaires et vos idées.

Mise à jour du 3/7/2016: Je ne parviens pas à reproduire ce problème pour le moment, car nous n'avons plus la solution dans l'état où elle se trouvait lorsque j'y avais travaillé l'année dernière. Je serais reconnaissant si un modérateur pourrait clore cette question. Les options de fermeture ne correspondent pas à mon scénario actuel, mais peut-être que quelqu'un d'autre trouvera les suggestions ci-dessous utiles s'il rencontre ce scénario. Merci à tous ceux qui ont suggéré une suggestion.

14
Ken Palmer

Sois sûr que:

  1. Outils -> Le débogueur d'options " Activer uniquement mon code " n'est pas coché
  2. Vous exécutez l'application en mode Debug , pas en mode Release
  3. Solution build est à jour .
2
Leo Kolezhuk

Voici une liste d'idées que je garde pour une telle occasion.

Vérifiez où votre dll est référencée et assurez-vous que c'est le code que vous essayez de déboguer.

Vérifiez que vous êtes dans le bon mode lors de la création: Debug/Release car ils peuvent placer les dll à des endroits différents. 

Êtes-vous attaché au bon processus?

Pour un site Web sur IIS, le code sur lequel vous travaillez est-il identique à celui qui s'exécute dans IIS? 

Allez à Debug> Windows> Modules et si la dll appropriée est là, cliquez dessus avec le bouton droit et chargez les symboles. Si ce n'est pas dans la liste, essayez quand même d'exécuter le code. Parfois, même s'il est indiqué que le point d'arrêt ne sera pas atteint, c'est uniquement parce que la dll n'est pas chargée tant que vous n'avez pas entré un scénario qui en a besoin. Essayez le scénario qui dépend de la dll et il se peut qu’il atteigne juste le point d’arrêt de toute façon. 

Redémarrez votre navigateur. Vous avez peut-être quelque chose en cache d'une ancienne DLL. 

1
stuartdotnet

De mon expérience précédente s'il vous plaît considérer ces: 

  • Vérifiez que vous avez placé le point d'arrêt au bon endroit et que vous utilisez la page ou le contrôleur approprié 
  • Faites un clic droit sur le point d'arrêt => Emplacement => Cochez la case "Autoriser le code source à être différent de la version d'origine". Si vous avez installé resharper, c'est probablement une aide.

  • Si vous appelez via un appel Ajax, assurez-vous de ne pas avoir d'erreur de script Java sur la page (pour ce IE erreurs de capture js par défaut) 

  • Parfois, c'est parce que vous ne construisez pas correctement. Donc, nettoyez la solution (Cliquez avec le bouton droit de la souris sur la solution et choisissez "clean solution" Élément) puis "Rebuild Solution". 

  • Parfois, c'est parce que vous avez peut-être désactivé l'option de construction pour Certaines bibliothèques de classes. Dans cette situation, vous devez donc reconstruire exclusivement ces Bibliothèques de classes. (vous pouvez le trouver en cochant la case "Configuration Manager" dans le menu "Build")

Espérons que ces aide

1
Mostafa

J'ai déjà rencontré ce problème et je l'ai résolu après avoir reconstruit le package de solution (clic droit sur le package de solution et exécution de la reconstruction)

1
Clement