17 Stimmen

global.asax Haltepunkt nicht getroffen

Ich habe etwas Code in meiner ASP.NET-Anwendung in C#, die in der Global.asax.cs Code-Datei. In der Application_Start , Session_Start y Application_Begin Request Ich habe einige Haltepunkte gesetzt. Keiner dieser Punkte wird jedoch jemals erreicht. Ich arbeite auf meinem lokalen Rechner mit VS8.

Ich habe Folgendes ausprobiert:

  • ASP Dev Server gestoppt
  • Alle temporären ASP.NET-Dateien gelöscht
  • Neu erstellt Global.asax
  • VS schließen und wieder öffnen
  • Projekt "Clean and Rebuild

Beim Versuch, meine nach diesen, werden die Haltepunkte nicht getroffen.

Haben Sie eine Idee, woran das liegen könnte?

31voto

Jeff Reddy Punkte 5472

Ich bin auf dasselbe Problem gestoßen. Ich gehe davon aus, dass Sie Ihren lokalen IIS anstelle des VS-Entwicklungsservers verwenden. In diesem Fall können Sie den Code in der Datei Global.asax.cs nicht mehr debuggen bzw. durchgehen, da dieser Code zu dem Zeitpunkt, an dem der Debugger angehängt wird, bereits im IIS ausgeführt wurde. Wenn Sie jedoch den Dev-Server verwenden, können Sie auf diesen Code zugreifen, da der Debugger bereits angehängt ist.

Ändern Sie also den Server in Ihren Projekteigenschaften, um den Visual Studio Development Server zu verwenden.

Diese finden Sie, indem Sie in Visual Studio mit der rechten Maustaste auf Ihr Projekt klicken > Project Properties > Web tab > Use Visual Studio Development Server .

6voto

Ofiris Punkte 5897

Was mir geholfen hat, war, etwas hinzuzufügen:

System.Diagnostics.Debugger.Break(); dazu Application_Start() Methode.

3voto

Ben Smith Punkte 18145

Bei einem Projekt, an dem ich arbeitete, war auf der Registerkarte die Option "Externes Programm starten" ausgewählt:

Visual Studio > Projekteigenschaften > Web

Dies führte dazu, dass die Haltepunkte nicht erreicht werden konnten.

Die Änderung von "Start Action" in "Current Page" hat dieses Problem für mich behoben.

2voto

ChrisO Punkte 4788

Wie bereits in einer anderen Antwort erwähnt, wird der Global.asax-Code ausgeführt, bevor der Debugger die Möglichkeit hat, sich anzuhängen. Um das zu umgehen, können Sie das Debugging starten, dann in IIS gehen und die Anwendung stoppen/starten, wodurch der Debugger den Neustart aufnehmen sollte.

2voto

Wenn Sie Visual Studio Development Server nicht verwenden möchten und IIS einsetzen, können Sie wie folgt vorgehen (getestet in VS2015 Professional)

1) Anwendungspool im laufenden Betrieb - Vergewissern Sie sich, dass der verwendete Anwendungspool läuft, indem Sie eine Seite aus Ihrer Webanwendung aufrufen (er kann aufgrund eines Idle-Timeouts angehalten sein).

2) An den Prozess anhängen - Ctrl-Alt-P o Debug -> Attach to Process -> Suchen Sie den w3wp-Prozess, der zu Ihrer Anwendung gehört.

Der Prozess "Anhängen an" kann erheblich beschleunigt werden durch die Verwendung von ReAttach-Verlängerung die Verknüpfungen zu kürzlich angehängten Prozessen erstellt.

3) Anwendungspool recyceln - Stellen Sie sicher, dass der Anwendungspool recycelt wird, indem Sie entweder in den IIS gehen und ihn recyceln oder noch schneller, indem Sie in die web.config gehen, eine Änderung vornehmen, die keine Auswirkungen hat (fügen Sie etwas Leeres außerhalb der Tags ein) und sie speichern

4) Fehlersuche starten - Führen Sie eine Anfrage an eine beliebige Seite aus Ihrer Webanwendung aus, um deren Initialisierung zu erzwingen. Sie sollten in der Lage sein, Haltepunkte von jeder der Startup-Methoden in der Anwendung zu setzen und zu erreichen. Global.asax

protected void Application_Start()
void Application_BeginRequest(Object sender, EventArgs e)
protected void Session_Start(object sender, EventArgs e)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X