Artikel-ID: 892277 - Geändert am: Freitag, 18. Mai 2007 - Version: 2.4

Problembehandlung bei ASP.NET mit WinDbg und SOS-Erweiterung

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
ASP .NET Support Voice-Spalte

Problembehandlung bei ASP.NET mit WinDbg und SOS-Erweiterung

diese Kolumne an Ihre Bedürfnisse anpassen wir möchten Sie Ihre Ideen zu den Themen zu senden, die Sie interessieren einladen möchten, und behandelt Probleme, die Sie anzeigen möchten, in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen. Sie können Ihre Ideen und ihr Feedback über das Formular Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) senden. Es gibt auch eine Verknüpfung zu dem Formular am unteren Rand dieser Spalte.

Auf dieser Seite

Alles erweitern | Alles schließen
Erneut Hallo und Willkommen bei der die Spalte Support Voice-Edition Januar 2005. Noch einmal möchte ich Jim Cheshire, einen Supportmitarbeiter hier bei Microsoft Unterstützung von ASP.NET für seine Beiträge danken. Gérard hat sich tolle Ideen für Support Voice-Kolumne und weiterhin freigeben möchten. Suchen für Gérards Beiträge letzten Monat und über den nächsten Monat oder so ein, und senden Sie uns wie immer Ihre Vorschläge für zukünftige Spalten. Jim Danke!

Gérard hat mit Microsoft sechs Jahren auf die Teams FrontPage, VB- und ASP.NET gearbeitet. Während dieser Zeit er hat für das Office Developer Center auf MSDN geschrieben, und er ist Autor von einem Buch auf FrontPage Inhalte Edition mithilfe von Microsoft Office FrontPage 2003 . Jim hat auch eine Website, in dem er bietet kostenlose Add-Ins für FrontPage zum Aktivieren von Webentwicklern das Microsoft-Produkten treffen. Hier ist die Website-Adresse:
http://www.jimcosoftware.com (http://www.jimcosoftware.com)
So geben Sie pull von einem Stuhl, deaktiviert die Schuhe kick und Lesen Sie unsere Rubrik alle zur Problembehandlung bei ASP.NET und beachten Sie, dass Sie Ihre Ideen zu uns auch über die "ASK FOR IT" Verknüpfung in jeder Spalte enthalten, die wir Veröffentlichen absenden können.
Jeremy

Problembehandlung bei ASP.NET mit WinDbg und SOS-Erweiterung


Ein guter Entwickler wird für alle Notfall planen. Natürlich entwickelt Teil der Planung einige stabile Routinen für die Ausnahmebehandlung. Viele ASP.NET-Entwickler werden Ausnahmen behandeln, indem den Benutzer mit einer ordentlich formatierte Webseite präsentieren und dann die Ausnahme in einer Datei später zu Analysezwecken Protokollinformationen.

Szenario:

haben Sie entwickelt und getestet, eine neue ASP.NET-Anwendung, die Ausnahmen in einer Protokolldatei protokolliert. Sie bereitstellen die ASPX-Seiten und die Assemblys, auf den Produktionswebserver. Wenn Personen Ihrer Anwendung verwenden, Sie sind eine Fehlerseite angezeigt, aber keine Ausnahme Protokollierung wird in die Protokolldateien geschrieben. Beachten Sie auch Sie, dass viele ASP.NET-Ereignisse in das Anwendungsprotokoll der Ereignisanzeige besagt, dass Aspnet_wp.exe unerwartet beendet wurde.

Dies ist eine häufige Art des Problems, die wir in Developer Support finden, und die Mehrheit der Kunden nicht wirklich wissen, wie bei der Problembehandlung bei der es. Schlimmer ist die gefürchtete "Server Application Unavailable" Fehlermeldung. Diesen Monat zeige ich Ihnen wie Sie diese Arten von Problemen mit der Debugtools für Windows beheben können.

Verzichtserklärung: Wenn Sie Microsoft Developer Support aufrufen, können wir Sie uns eine Absturzabbilddatei oder eine Speicherabbilddatei hängt schicken häufig auffordern. Die Analyse der Speicherabbilddatei in diesem Artikel werden ganz einfach und schnell. In vielen Fällen die Ursache eines Problems ist nicht sichtbar und kann Analyse, um die Hauptursache abzurufen viele Stunden dauern. Lassen Sie nicht der Einfachheit und geraden-Forwardness dieser Analyse Dump-Datei verleiten verwirren, dass Sie alle diesem leicht sind. Die meisten, sind in der Tat nicht!

Erste vorbereitet

Bevor wir beginnen, müssen Sie die Installation der Debugtools für Windows. Auch wenn Sie bereits eine Kopie installiert haben, stellen Sie sicher, dass die neueste Version, verfügen da wir eine Erweiterung für verwaltete Debuggen, ist nur in der neuesten Version der Debugtools für Windows enthalten.

Sie können die Debugtools für Windows aus folgenden Microsoft Web Website herunterladen:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx (http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx)
Beim Installieren der Debugtools für Windows können Sie eine benutzerdefinierte Installation im Ordner C:\Debuggers ausführen möchten. Wir werden ausgeführt werden Tools von der Befehlszeile aus, und wenn der Pfad einen kurzen ist, wird sein dies so einfacher für Sie. Nach Abschluss der Installation sollten Sie die ASP.NET-Seite Beispiel herunterladen, die den Arbeitsprozess Absturz wird.
http://download.microsoft.com/download/c/a/1/ca1c6329-3b3f-4d9e-a76d-54c78d3ddfbc/crash.exe (http://download.microsoft.com/download/c/a/1/ca1c6329-3b3f-4d9e-a76d-54c78d3ddfbc/crash.exe)
Anmerkung Damit Sie die Abbilddatei, die mithilfe dieser Seite erstellen können, müssen Sie ASP.NET 1.1 mit Service Pack 1 (SP1) installiert ausgeführt werden. Ohne SP1 wird diese Seite ausgeführt, ohne zu einen Absturz generieren.

Sie sollten auch den Symbolpfad für WinDbg einrichten. Symbole sind nicht für die Funktion der Namensauflösung auf verwaltete Assemblys erforderlich, aber Sie Symbole für systemeigene Funktion Auflösung benötigt werden. So legen Sie den Symbolpfad in WinDbg fest
  1. Öffnen Sie WinDbg. Klicken Sie auf Start , zeigen Sie auf Programme und klicken Sie dann auf Der Debugtools für Windows .
  2. Klicken Sie im Menü Datei auf Symbol File Path .
  3. Geben Sie im Dialogfeld Symbolpfad den folgenden Symbolpfad:
    SRV*c:\Symbols*http://msdl.Microsoft.com/Download/Symbols
  4. Schließen Sie WinDbg, und geben Sie Ja eine Eingabeaufforderung, Basisarbeitsbereich Informationen zu speichern.
Sie können nun Absturzabbilddatei zu erstellen.

Erstellen der Absturz Speicherabbild-Datei

In dieser exemplarischen Vorgehensweise verursacht auf die Schaltfläche auf der Beispielseite den ASP.NET-Workerprozess zum Absturz. In vielen Fällen wird nicht wissen Sie die genauen Schritte zum Generieren von eines Absturzes. In der Tat stürzt Ihr Produktionsanwendung zu einem zufälligen Zeitpunkt. Wie Sie bald sehen werden, ist es unwichtig, ob ein Absturz vorhersehbarer oder zufällig auftritt. Erstellen einer Speicherabbilddatei ist recht einfach mithilfe von Adplus, die VBScript-Datei, die den gesamten Prozess automatisiert.

Um die Abbilddatei zu erstellen, müssen Sie zunächst zu der Beispielseite wechseln. (Klicken Sie nicht auf die Schaltfläche!) Nachdem die Seite erfolgreich bedient wurde wurde, wissen Sie, dass der Aspnet_wp.exe-Prozess (oder der Prozess w3wp.exe auf Windows Server 2003) gestartet wurde. Sie können nun den Debugger an den Workerprozess anhängen, damit eine Speicherabbilddatei erfasst, wenn es abstürzt.

Zur Erstellung einer Speicherabbilddatei:
  1. Öffnen Sie eine neue Eingabeaufforderung auf dem Webserver, und wechseln Sie zum Verzeichnis, in dem der Debugtools für Windows installiert sind.
  2. Führen Sie den folgenden Befehl aus:
    Cscript adplus.vbs - Absturz - Pn "aspnet_wp.exe" -o c:\crashdump
    Wenn Sie Microsoft Windows Server 2003 ausführen, führen Sie folgenden Befehl aus:
    Cscript adplus.vbs - Absturz - Pn w3wp.exe-o c:\crashdump
Ich wird nicht hier in sehr detailliert auf adplus.vbs, aber wenn Sie weitere Informationen wünschen, können Sie die folgenden Microsoft Knowledge Base-Artikel überprüfen:
286350  (http://support.microsoft.com/kb/286350/ ) Verwendung von ADPlus zur Problembehandlung bei "hängt" und "abstürzt"
Nachdem Sie diesen Befehl ausgeführt haben, wird eine Reihe von Dialogfeldern angezeigt. Klicken Sie auf OK in jedem Dialogfeld. Eine Schaltfläche sollte auf der Taskleiste jetzt für den Debugger, CDB, den Anwendungsnamen für Debugger angezeigt werden. Allerdings können Sie im Fenster abweichen.

Note Sie müssen an der Konsole auf dem Webserver sein, wenn Sie Adplus im Absturzmodus ausführen. Sie können nicht remote Adplus im Absturzmodus ausführen.

Sie können nun einen Absturz zu generieren. Klicken Sie auf der Seite zum Absturz des Arbeitsprozesses. Wenn JIT-Debuggen in Visual Studio .NET aktiviert ist, wird ein Dialogfeld angezeigt, Sie informiert, dass eine Ausnahme aufgetreten ist, aber der angefügte Debugger konnte nicht behandelt. Wenn ist JIT-Debuggen aktiviert, wird die Speicherabbilddatei ohne alle Dialoge angezeigt wird, erstellt. In beiden Fällen nach dem Sie die CDB -Schaltfläche in der Taskleiste ausgeblendet angezeigt wird, die Abbilddatei ist abgeschlossen, und Sie sind bereit, zu der nächsten Schritt zu verschieben, auf.

Beim Auschecken der Speicherabbilddatei

  1. Starten Sie WinDbg.
  2. Klicken Sie im Menü Datei auf Open Crash Dump zum Öffnen der Dumpdatei. (Klicken Sie nicht auf dem Öffnen auf der Symbolleiste auf die Schaltfläche.)
  3. Wechseln Sie zu dem Ordner C:\Crashdump. In diesem Ordner sehen Sie einen anderen Ordner mit langen Namen, die mit Crash_Mode_Date beginnt. Adplus gespeichert die Speicherabbilddateien innerhalb des Ordners. (Sie sollte mehr als eine Dump-Datei im Ordner haben.) Die Sie in WinDbg öffnen möchten Dump-Datei ist die zweite Möglichkeit Ausnahme Speicherabbilddatei. Es sollte mit dem Namen der Datei offensichtlich sein die Abbilddatei die zweite Möglichkeit Ausnahme Speicherabbilddatei ist.
Nachdem Sie die Sicherungsdatei geöffnet haben, startet WinDbg Symbole downloaden. Abhängig von der Geschwindigkeit Ihrer Internetverbindung kann dieser Vorgang mehrere Minuten dauern. Wenn es abgeschlossen ist, sehen Sie die Eingabeaufforderung in WinDbg, angezeigt werden, wie in der folgenden Abbildung dargestellt.
Bild minimierenBild vergrößern
 WinDBg window
Abbildung 1: WinDbg - die "0: 000 >" an der Eingabeaufforderung Eingabeaufforderung gibt den aktuellen Thread, thread 0.

Sie können den fehlerhaften Stapel anzeigen, indem Sie den kb -Befehl an der Eingabeaufforderung eingeben. Hier ist die Ausgabe aus der Dumpdatei:
0:000> kb
ChildEBP RetAddr  Args to Child              
00771018 791b6173 00000643 00000000 00b59bc0 mscorwks!_EH_prolog+0x2
00771928 791b60c0 00771a04 00000000 00000000 mscorwks!EEClass::DoRunClassInit+0xbe
0077193c 791d75a7 00771a04 00771a50 00b59bc0 mscorwks!MethodTable::CheckRunClassInit+0x1d
00771a14 791d7746 00000000 0086fb88 00771a50 mscorwks!MethodDesc::DoPrestub+0x28e
00771a2c 00a92f76 00771a50 0180f154 00ee5cd4 mscorwks!PreStubWorker+0x42
WARNING: Frame IP not in any known module. Following frames may be wrong.
00773a38 0337f2bc 00f8463c 00eb593c 00ee5cc8 0xa92f76
00773a64 031cd7e4 00eb593c 0180ea7c 00f84560 0x337f2bc
00773aac 033a3299 00000000 00eb593c 0180ea7c 0x31cd7e4
00773b50 033a3031 00000001 00000000 0180e238 0x33a3299
00773bec 0332ee47 00edb274 0180df00 00f8463c 0x33a3031
00773c28 0332e71b 0180df00 033a35c5 0180d870 0x332ee47
00773cc4 033a3031 00000001 00000000 0180d2b4 0x332e71b
00773d60 0332ee47 00edb274 0180cf7c 00f8463c 0x33a3031
00773d9c 0332e71b 0180cf7c 033a35c5 0180c8ec 0x332ee47
00773e38 033a3031 00000001 00000000 0180c330 0x332e71b
00773ed4 0332ee47 00edb274 0180bff8 00f8463c 0x33a3031
00773f10 0332e71b 0180bff8 033a35c5 0180b968 0x332ee47
00773fac 033a3031 00000001 00000000 0180b3ac 0x332e71b
00774048 0332ee47 00edb274 0180b074 00f8463c 0x33a3031
00774084 0332e71b 0180b074 033a35c5 0180a9e4 0x332ee47


Note Wenn Sie auf einem Multiprozessorsystem (oder ein System hyper-Threading) ausführen, sehen Sie sich in Mscorsvr statt Mscorwks Funktionsaufrufe.

Sie können die Funktionsnamen in "Mscorwks.dll" sehen, da WinDbg Symbole für Mscorwks geladen. Jedoch sehen folgenden Aufrufe in Mscorwks keine Modulnamen und keine Funktionsnamen an. Ist welche verwalteten Code (Code, der unter der Common Language Runtime ausgeführt wird) in WinDbg standardmäßig aussieht, und es ist offensichtlich nicht hilfreich Ausgabe. Um anzuzeigen, wo in verwaltetem Code, müssen Sie die SOS-Erweiterung für WinDbg verwenden.

Die SOS-Erweiterung

SOS ist eine Erweiterung für WinDbg, die das Debuggen von verwaltetem Code ermöglicht. SOS WinDbg, der Schwerpunkt Debuggen von verwalteten Anwendungen viele Befehle hinzugefügt, und viele ASP.NET-spezifische sind. Die Erweiterung ist eine DLL-Datei sos.dll aufgerufen, und befindet sich im Ordner Clr10 in dem Ordner, in denen der Debugtools für Windows installiert werden.

Geben Sie Folgendes an der Eingabeaufforderung in WinDbg, um die SOS-Erweiterung zu laden:
.Load clr10\sos
Überspringen Sie nicht den Punkt am Anfang des Befehls! Wenn alles gut geht, werden Sie wieder die Eingabeaufforderung weitergeleitet. Wenn ein Fehler auftritt, stellen Sie sicher, dass Sie die neueste Version des Debugging Tools für Windows installiert haben.

Besprochen ein paar der Befehle aus SOS debug die Absturzabbilddatei, aber gerne die anderen Befehle in SOS auf Ihrer eigenen Zeit durchsuchen. Können Sie die ! Hilfe Befehl, um eine Liste der Befehle und eine kurze Beschreibung der einzelnen abrufen.

Untersuchung der Hauptursache

Nun, SOS geladen wurde, haben wir einen Blick auf einige der Befehle, die in eine Absturzabbilddatei Problembehandlung nützlich sind.

Sehen wir uns dem verwaltete Stapel für den aktuellen Thread, Thread 0. Erledigen Sie in Übung verwenden die ! Clrstack Befehl. Typ ! Clrstack an der Eingabeaufforderung. WinDbg startet, sichern den Stapel. Ein normaler Stapel sollte vollständig in wenigen Sekunden out ausgeben. In diesem Fall scheint die Ausgabe um kontinuierlich zu wechseln. Fahren Sie fort, und drücken Sie STRG-UNTBR (oder klicken Sie in WinDbg im Menü Debuggen auf unterbrechen ), und es wir betrachten. Here's a portion of the stack:
Void System.Web.HttpServerUtility.ExecuteInternal(String,Class System.IO.TextWriter,Boolean)
Void System.Web.HttpServerUtility.Transfer(String,Boolean)
Void ASP.crash_aspx.btnCrash_Click(Object,Class System.EventArgs)
Void System.Web.UI.WebControls.Button.OnClick(Class System.EventArgs)
Void System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String)
Void System.Web.UI.Page.RaisePostBackEvent(Class System.Web.UI.IPostBackEventHandler,String)
Void System.Web.UI.Page.RaisePostBackEvent(Class System.Collections.Specialized.NameValueCollection)
Void System.Web.UI.Page.ProcessRequestMain()
Void System.Web.UI.Page.ProcessRequest()
Void System.Web.UI.Page.ProcessRequest(Class System.Web.HttpContext)
Void System.Web.HttpServerUtility.ExecuteInternal(String,Class System.IO.TextWriter,Boolean)
Void System.Web.HttpServerUtility.Transfer(String,Boolean)
Void ASP.crash_aspx.btnCrash_Click(Object,Class System.EventArgs)
Void System.Web.UI.WebControls.Button.OnClick(Class System.EventArgs)
Void System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String)
Void System.Web.UI.Page.RaisePostBackEvent(Class System.Web.UI.IPostBackEventHandler,String)
Void System.Web.UI.Page.RaisePostBackEvent(Class System.Collections.Specialized.NameValueCollection)
Void System.Web.UI.Page.ProcessRequestMain()
Void System.Web.UI.Page.ProcessRequest()
Void System.Web.UI.Page.ProcessRequest(Class System.Web.HttpContext
If you look closely, you'll see a pattern here. Wir starten Deaktivieren der Verarbeitung der Anforderung und ein PostBack auslösen. Das OnClick-Ereignis wird dann für eine Schaltfläche ausgelöst. Führt eine Server.Transfer. Die Server.Transfer scheint dann um die gesamte alle über erneut starten. In diesem Fall werden bei jedem dieser Schleife ausführt, Objekte auf dem Stapel abgelegt. Schließlich das System führt genügend Stackspeicher und einem StackOverflowException auftritt.

Erhalten eine bessere Vorstellung von Was ist passiert hier Sie erhalten eine detailliertere Ausgabe aus dem Stapel, indem Ausführen der ! Clrstack s Befehl. Dadurch können Sie den vollständigen Stapel. Hier finden Sie einige dieser Ausgabe. Erstellen Sie für die vollständige Ausgabe dieses Befehls eine Speicherabbilddatei die Beispielseite verwenden, und führen Sie dann den Befehl. Ich haben es hier bearbeitet, ist die Ausgabe sehr ausführlichen.
0:000> !clrstack -s
Thread 0
System.Web.HttpServerUtility.ExecuteInternal(String,Class System.IO.TextWriter,Boolean)
    ESP/REG  Object   Name
    00773ac4 0180e7f4 System.EventArgs
    00773ac8 00f86c14 System.Web.HttpServerUtility
    00773acc 0180e238 System.Web.UI.WebControls.Button
    00773ad0 0180eac0 System.Object[]
    00773ad4 0180ea7c System.String    /crash.aspx
    00773ad8 00eb593c System.String    c:\inetpub\wwwroot\crash.aspx
    00773ae4 00f84754 System.Web.HttpResponse
    00773ae8 00f846bc System.Web.HttpRequest
    00773b00 00f86bec System.String    crash.aspx
    00773b04 00f86c14 System.Web.HttpServerUtility
    00773b2c 00eef57c System.String    btnCrash
    00773b34 00eef57c System.String    btnCrash
 00773b38 0180e2e4 System.Collections.Specialized.ListDictionary/DictionaryNode
    00773b44 00f797d8 System.String    CausesValidation
    00773b4c 0180e2e4 System.Collections.Specialized.ListDictionary/DictionaryNode
00773b60  033a3031 [DEFAULT] [hasThis] Void System.Web.HttpServerUtility.Transfer(String,Boolean)
    ESP/REG  Object   Name
    00773b60 0180e238 System.Web.UI.WebControls.Button
00773b6c  03360398 [DEFAULT] [hasThis] Void ASP.crash_aspx.btnCrash_Click(Object,Class System.EventArgs)
    ESP/REG  Object   Name
    00773b70 0180e7f4 System.EventArgs
00773b74  033a2fc5 [DEFAULT] [hasThis] Void System.Web.UI.WebControls.Button.OnClick(Class System.EventArgs)
    ESP/REG  Object   Name
    00773b74 0180df00 ASP.crash_aspx
    00773b78 0180e238 System.Web.UI.WebControls.Button
    00773b7c 00f8601c System.Web.HttpValueCollection
    00773b80 0180e314 System.ComponentModel.EventHandlerList
00773b88  033a2da2 [DEFAULT] [hasThis] Void System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String)
können Sie erkennen aus dieser Ausgabe, dass der Aufruf zu Server.Transfer crash.aspx als Parameter übergeben wird. Wie können Sie, das feststellen? Ein Hinweis darauf ist, dass die Seite, die nach dem Aufruf ausführt crash.aspx. Allerdings können Sie auch feststellen, anhand des HttpRequest-Objekts.

Sie können das HttpRequest-Objekt in diesem Stapel sehen wir betrachten, um herauszufinden, was in dieser Anforderung übergeben wurde. Die Verwendung des Befehls Dump Objekt erledigen Sie Übung ! Führen Sie . Dieser Befehl einen Parameter: die Adresse des Objekts zu sichern. In der obigen Ausgabe ist die Adresse in der Ausgabe die zweite Hexadezimalzahl.

Hier ist die Ausgabe des HttpRequest-Objekts. Ich diese Ausgabe aus Gründen der Kürze bearbeitet haben.
0:000> !do 00f846bc 
Name: System.Web.HttpRequest
MethodTable 0x03089170
EEClass 0x02e9a1cc
Size 152(0x98) bytes
mdToken: 02000072  (c:\windows\assembly\gac\system.web\1.0.5000.0__b03f5f7f11d50a3a\system.web.dll)
FieldDesc*: 030888b0
      MT    Field   Offset                 Type       Attr    Value Name
03089170  4000626       14                CLASS   instance 00f8457c _path
03089170  4000627       8c       System.Boolean   instance 0 _computePathInfo
03089170  4000628       18                CLASS   instance 00f8457c _filePath
03089170  400062e       2c                CLASS   instance 00f845a4 _pathTranslated
03089170  400062f       30                CLASS   instance 00e6703c _baseVirtualDir
03089170  4000630       34                CLASS   instance 00edce64 _contentType
03089170  4000631       88         System.Int32   instance 85 _contentLength
03089170  400063c       60                CLASS   instance 00f8601c _form
in dieser Ausgabe können Sie das _filePath-Objekt. Wenn Sie die Verwendung als Dump ausgeben der ! Führen Sie Befehl wird angezeigt, dass es eine Zeichenfolge befindet, enthält "/ crash.aspx". Dadurch wird bestätigt, dass die Rekursion durch crash.aspx laden rekursiv verursacht wird. Warum geschieht, obwohl? Wir untersuchen tiefer.

Wieder betrachten Sie die Ausgabe von ! Clrstack . Wenn Sie genau betrachten, sehen Sie sich, dass das Click -Ereignis für die Schaltfläche jedes Mal ausgelöst der Seite laden. Dadurch wird angewiesen, die Sie in einem PostBack Zustand laden die Seite Mal. Sie können auch aus dem Stapel feststellen, dass in das Click -Ereignis Server.Transfer aufgerufen wird. Aus diesem Grund müssen verhindern, dass ASP.NET abstürzt, wenn diese Seite geladen wird, Sie so wird ein PostBack bei jedem der Seite aufgrund von der Server.Transfer laden verhindern dies.

Note Wenn Sie eine Server.Transfer in mit ASP.NET Framework 1.1 SP1 installiert und behalten Sie Formulardaten, dadurch das Problem immer. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
839521  (http://support.microsoft.com/kb/839521/ ) Update: Die Methode Server.Transfer verursacht einen Stapelüberlauf und führt den ASP.NET-Workerprozess zu reagieren
Die Methode Server.Transfer verfügt über zwei Parameter; das erste ist der URL auf die Ausführung übertragen soll und die zweite ist ein boolescher Wert, der angibt, ob die Daten des Formulars beibehalten werden soll. Was geschieht, wenn wir die Daten des Formulars beibehalten? Einerseits wird ASP.NET berücksichtigen, die ein PostBack. Sie können, daher dieser Absturz beenden, indem Sie den zweiten Parameter dem Aufrufen von Server.Transfer False festlegen.

Bis umbrechen

In diesem Artikel präsentiert eine kurze Exemplarische Vorgehensweise, wie Sie WinDbg und SOS zum Debuggen von ASP.NET-Anwendungen verwenden können. Der Zweck dieses Artikels wurde eine Einführung in einige der Konzepte und Terminologie Debuggen im Benutzermodus beteiligt. Es ist eine unterschiedliche Fertigkeiten als Quellcode Debuggen und erste gut es erfordert eine erhebliche Zeit Investition. Es ist eine Fähigkeit, die Erfahrung ist.
Mehr Erfahrung empfehle ich, dass Sie die ASP.NET-Anwendung in einer Entwicklungs- oder Testumgebung zu laden und einige hängt-Abbilddateien zu unterschiedlichen Zeiten erfassen. Sie hierfür unter Adplus im Hängmodus mithilfe von den folgenden Befehl:
Cscript adplus.vbs - hängt - Pn "aspnet_wp.exe" -o c:\aspnet_dump

Dieser Befehl wird den aspnet_wp.exe-Prozess sofort sichern und erstellen Sie eine Speicherabbilddatei im Ordner C:\Aspnet_dump. Eine hängt Dump-Datei wie diese kann über eine Remoteverbindung ausgeführt werden.

Microsoft's Patterns and Practices-Gruppe (PAG) hat auch einige ausgezeichnete und ausführliche Artikel auf geschrieben Debuggen von .NET-Anwendungen mit WinDbg. Die folgende Microsoft-Website diese Artikel:
http://msdn2.microsoft.com/en-us/library/ms954594.aspx (http://msdn2.microsoft.com/en-us/library/ms954594.aspx)
Eines meiner Ziele beim Schreiben dieses Artikels war in der Tat bieten Ihnen die Grundlage zum ausgezeichneten Artikel PAG bereitgestellt hat, nutzen. Stark sollten Sie davon profitieren.
Sie hier im nächsten Monat angezeigt wenn ich Sie Verwendung von WinDbg und SOS-Erweiterung zum Analysieren von Dateien für das Absturzspeicherabbild beibringen. Bis nächsten,

Jim Cheshire
Support-Ingenieur
Microsoft Developer Support

Sie gerne wie immer Ideen auf Themen, die Spalten in Zukunft behandelt werden soll oder in der Knowledge Base mithilfe des Formulars Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) zu senden.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Keywords: 
kbmt kbhowto kbasp KB892277 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 892277  (http://support.microsoft.com/kb/892277/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.