Wenn Sie Visual Studio 2005 und IE8 verwenden, könnte ich eine Erklärung haben: IE8 hat eine neue Funktion namens Loosely-Coupled IE (LCIE) eingeführt, die bekannte Probleme beim Debuggen von VS2005 ASP.NET-Anwendungen verursacht. Sehen Sie sich diesen Thread auf SO für weitere Details und einige Lösungen an.
Es stellte sich heraus, dass all meine Debugging-Probleme verschwanden, als ich alle laufenden Instanzen von IE8 heruntergefahren habe, bevor ich einen Debugging-Lauf in meinem ASP.NET-Projekt gestartet habe.
Ein weiterer Grund, warum ich hier poste, ist, einen Blog zu teilen, den ich gefunden habe, der eine Vielzahl von potenziellen Lösungen für das Problem 'Breakpoints funktionieren nicht' auflistet. Es ist nett, weil der Blog die meisten Lösungen an einem Ort auflistet, die ich im Internet verstreut gefunden habe. So oder so, der Autor des Blogs ist George P. Alexander; ich werde die interessanten Teile hier kopieren und einfügen, falls etwas mit dem Artikel passiert:
-
Verwendung von präzisionsgesteuerten Raketen: Löschen Sie die .pdb-Dateien in Ihren Obj- und Bin-Ordnern. Neu kompilieren. Ausführen.
-
Alle .dlls ausbomben: Löschen und neu laden Sie alle referenzierten .dlls (wie Ihre Klassenprojekte)
-
Einsatz einer Massenvernichtungswaffe: Wenn Punkt #1 und #2 nicht funktionierten, löschen Sie die Inhalte der Obj- und Bin-Ordner selbst, sodass alle .pdbs und .dlls vernichtet werden. Laden Sie die erforderlichen .dlls erneut und probieren Sie es aus.
-
VS.Net-Zauber: VS.Net schließen und neu starten. Neu erstellen. Ausführen. Ja, manchmal funktioniert es.
-
Windows-Zauber: Ihren Computer herunterfahren und neu starten. Neu erstellen. Ausführen.
-
Ausführungsmodus: Stellen Sie sicher, dass der Ausführungsmodus von VS.Net auf "Debug" und nicht auf "Release" eingestellt ist.
-
Web.config-Einstellungen: Stellen Sie sicher, dass das XML-Element "compilation" in Ihrer Web.config-Datei über ein Attribut mit debug = "true" verfügt. Nur wenn dies aktiviert ist, werden Webanwendungen und Dienste ihre .pdb-Dateien mit den .dlls generieren.
-
Projekteigenschaften #1: Stellen Sie sicher, dass Projekt Eigenschaften --> Debug --> Aktivieren von "ASP.Net-Debugging ist true" oder "Aktivieren des Visual Studio-Hosting-Prozesses" (je nach der Version von VS.Net, die Sie verwenden) aktiviert ist.
-
Projekteigenschaften #2: Stellen Sie sicher, dass Projekt Eigenschaften --> Konfigurationseigenschaften --> Erstellen --> "Debugging-Informationen generieren" auf "True" eingestellt ist.
-
Falscher Prozess angehängt: Möglicherweise ist Ihre Debugging-Session nicht am richtigen Prozess angehängt. Möglicherweise müssen Sie manuell den Prozess anhängen. Dies ist bei Webdiensten möglich. Die Option, einen Prozess anzuhängen, befindet sich im Debug-Menü.
-
Skript- und nicht verwalteter Code-Debugging: Können Sie Skripte oder nicht verwalteten Code nicht debuggen? Stellen Sie sicher, dass Projekt Eigenschaften --> Debug --> "ASP-Debugging aktivieren" oder "Nicht verwaltetes Debugging aktivieren" (je nach Ihrer Version von VS.Net) auf true eingestellt ist.
-
@Page-Direktive #1: Stellen Sie sicher, dass das Attribut AutoEventWireup in Ihrer .aspx-Dokumenten-@Page-Direktive auf "true" eingestellt ist.
-
@Page-Direktive #2: Stellen Sie sicher, dass das Attribut Debug in Ihrer .aspx-Dokumenten-@Page-Direktive auf "true" eingestellt ist. Wenn Sie das Attribut nicht finden, ist das in Ordnung. Standardmäßig ist es true.
-
Rogue .DLLs: Stellen Sie sicher, dass Sie keine andere Instanz der .dll laufen haben, die sich an einem anderen Ort als dem beabsichtigten Projektordner befindet.
14.1 Rogue .dlls Schläferzelle #1: Haben Sie Ihre Projekt .dll im GAC-Ordner installiert? Möglicherweise führen Sie die .dll aus Ihrem GAC-Ordner aus, anstelle derjenigen aus Ihrem Bin-Ordner. Entfernen/Deinstallieren Sie die .dll aus dem GAC und versuchen Sie es erneut.
14.2 Rogue .DLLs Schläferzelle #2:
C:\Dokumente und Einstellungen[Benutzername]\VSWebCache[Rechnername]:
Führen Sie eine Massenvernichtungswaffe (#3) auf den Ordnern aus, die mit Ihrem Projekt zusammenhängen.
14.3 Rogue DLLs Schläferzelle #3: .dlls aus Ihrem Projekt, die an einem anderen Ort liegen, aber stattdessen in Ihrem Projekt referenziert sind. Sie können dies herausfinden, indem Sie die Projekteigenschaften untersuchen. Kurz gesagt, VS.Net verweist auf eine andere .dll und nicht auf die in Ihrer Entwicklungs Umgebung geladene .dll.
14.4 Rogue .DLLs Schläferzelle #4: Hoffentlich müssen Sie nicht mit diesem Ordner spielen, wenn Sie mit den obigen Punkten fertig sind...
Vorstellung von C:\WINDOWS\Microsoft.NET\Framework[.Net-Version]\Temporary ASP.NET-Dateien\
Dieser Ordner könnte ältere Versionen von .dlls enthalten, die in Ihrem Windows-Ordner gespeichert sind und beim Ausführen von VS.Net referenziert werden könnten. Wenn dies passiert, ist es ärgerlich. Sie können so viele Ordner und Inhalte löschen, WIE SIE IHREM PROJEKT ANGEHÖREN. Es könnten schreibgeschützte Sperren vorhanden sein, die Sie deaktivieren müssen, indem Sie Prozesse schließen. Das ist eher ein letzter Ausweg. Tun Sie dies nicht, wenn Sie noch nie mit Ihrem Windows-Ordner herumgespielt haben. In den meisten Fällen hilft etwas, das vor diesem Punkt getan wird, die Probleme zu beheben. Idealerweise müssen Sie diesen Punkt nicht mehr lesen, wenn Sie mit den obigen Hinweisen fertig sind. Und nur zur Sicherheit: Ich empfehle niemandem, diese Option zu erkunden oder in Ihrem Windows-Ordner herumzuspielen, wenn Sie keinen Doktortitel in Physik, Mathematik, Windows und .Net haben.
Andere Tipps:
- Modul-Fenster: Das Modul-Fenster kann angesehen werden, während Ihre Anwendung von VS.Net ausgeführt wird (Debug --> Windows --> Module). Alle Module Ihres Projekts sollten dort aufgeführt sein. Wenn die .dll Ihres Projekts aufgelistet ist und der Status der Symbole "Symbole geladen" ist, haben Sie kein Problem.
Wenn es sich um eine Nachricht handelt, die sich auf Ihre .pdb-Datei bezieht, gehen Sie zu "Symbole auswählen" und wählen Sie die entsprechende .pdb-Datei aus. Sie müssen möglicherweise das Debugging neu starten oder VS.Net erneut laden. Der Status sollte jetzt auf "Symbole geladen" geändert werden.
2. VS.Net-Optionen: Werkzeug --> Optionen --> Debuggen In VS.Net ab 2005 gibt es einen weiteren Knoten namens "Symbole", in dem Sie VS.Net bitten können, nach Symbolen zu suchen. Dies kann auch über das Modul-Fenster beim Debuggen erfolgen.
0 Stimmen
In meinem Fall wird die gleiche ASP.NET-App auf mehreren Domains ausgeführt und verwendet die Domain aus der Anfrage, um den Inhalt zu wählen, der bereitgestellt werden soll. Sie ist so eingestellt, dass sie auf dem lokalen IIS läuft und über die Hosts-Datei die Domains zu 127.0.0.1 aufgelöst werden. Die App lief OK, aber der Debugger hielt nicht an den Haltepunkten an, bis ich die Projekteigenschaften > Web > Server > Projektpfad auf die Domain setzte, die zur Anfrage verwendet wurde. (Es enthielt eine andere Domain, unter der die App verfügbar ist.)