Ich kann global.asax Datei nicht debuggen!Ist es möglich, Global.asax zu debuggen?
Ich habe einige Codes in Application_Start()
Methode, aber wenn ich einen Unterbrechungspunkt in der Methode festlegen, wird es ignoriert!
Ist das normal?
Ich kann global.asax Datei nicht debuggen!Ist es möglich, Global.asax zu debuggen?
Ich habe einige Codes in Application_Start()
Methode, aber wenn ich einen Unterbrechungspunkt in der Methode festlegen, wird es ignoriert!
Ist das normal?
Vielleicht sollten Sie versuchen:
Ja, das ist normal.
Application_Start()
wird von IIS verarbeitet.
Aber alle anderen Methoden, zum Beispiel Session_Start
, und alle anderen, außer Application_Start()
können normal debuggt werden.
Application_Start()
wird einmal pro AppDomain aufgerufen. Wenn Sie nicht Ihren Haltepunkt treffen, bedeutet dies wurde das AppDomain bereits erstellt, so wie folgt vorgehen:
überprüfen zu debuggen, die Ihre Web-Anwendung im Debug-Modus ist (<compilation debug="true">
in web.config).
Wenn Sie den von VS gestarteten IIS des Entwicklers verwenden, starten Sie ihn einfach neu oder erstellen Sie eine Anwendung neu.
Wenn Sie auf normale IIS sind haben Sie zwei Möglichkeiten:
Debug - Attach to process
verwenden, den Computernamen eingeben und dann einen zu debuggenden Prozess auswählen. Es ist normalerweise eine w3wp.exe, die im verwalteten Modus arbeitet.läuft, danke für Ihre Antwort. Ich benutze IIS über VS. – mahdiahmadirad
Eine einfache Möglichkeit zum Einbrechen Application_Start()
ist die System.Diagnostics.Debugger
Klasse zu verwenden. Sie können das Abbrechen der Anwendung erzwingen, indem Sie System.Diagnostics.Debugger.Break()
einfügen, wo der Debugger unterbrochen werden soll.
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
// ...
}
Löschen Sie die global.asax
und fügen Sie eine neue hinzu. In meiner Lösung gab es eine global.asax
und eine global.asax.cs
.
Alle Methoden (Session_Start
, Application_Start
, ...) wurden in den Bot-Dateien gespeichert, aber nur die in global.asax
wurden berücksichtigt. Also, Breakpoints und Code in der CS tun nichts.
Nur nach dem erneuten Erstellen der Datei hatte die global.asax.cs
die entsprechenden Methoden und sie liefen.
Ich folgte den Anweisungen hier: http://rossnelson.blogspot.ca/2005/11/fixing-globalasax-in-aspnet-20.html. Im Allgemeinen, entfernen Sie die global.asax und fügen Sie eine globale Anwendung Klasse, die die Asax mit einem Code hinter Datei neu erstellen, die ich dann betreten kann. Ich laufe auf IIS und es funktioniert gut. – cbeuker
Dies wird auch als "Berühren der web.config" bezeichnet und kann für verschiedene Szenarien verwendet werden, wenn Sie Ihre Website aktualisieren müssen, ohne IIS zu berühren. Ich kann nicht glauben, dass es mir nicht eingefallen ist. Vielen Dank. – HockeyJ
Ich wünschte, es wäre so einfach. Aber für mich? "Computer sagt nein" – Justin
Eine weitere Alternative zu den akzeptierten System.Diagnostics.Debugger.Break();
würde
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Launch();
//...
}
sein, die den Code nicht brechen sollte und den Debugger auch starten, wenn der Dienst mit unterschiedlichen Rechten gestartet wurden.
das ist schön, ich habe versucht und es hat auch für mich funktioniert ... danke –
Erwarten Sie nicht, dass die Funktion Application_Start() sofort aufgerufen wird, indem Sie f5 drücken. Application_Start() wird nur zum Zeitpunkt der ersten Anforderung an die Anwendung aufgerufen. Seltsam, aber wahr.
Falls alle Antworten nicht funktioniert, versuchen:
<compilation debug="true" ... />
in web.config
. ;)
Seltsam, dass dies als die Antwort markiert wurde, hat noch eine -2 Bewertung ... –
Es hat eine negative Bewertung, weil es falsch ist. Es ist korrekt zu sagen, dass Sie in debug sein müssen (oder Sie haben nicht die pdb-Dateien) und Sie müssen den Server erfassen, wenn es gestartet wird (denn das ist, wenn dieser Code ausgeführt wird), aber Sie werden nicht in der Lage sein an den Prozess anhängen. Sie benötigen einen laufenden Prozess, um den Debugger anzuhängen, der global.asax-Code wird in den ersten paar Millisekunden dieses Prozesses ausgeführt, so dass es buchstäblich unmöglich ist (ohne die [korrekte Antwort unten] zu verwenden) (https://stackoverflow.com/a/ 4809464/542251)) an den Prozess anzuhängen, wie es diesen Code – Liam