Problembehandlung bei ASP.NET

ASP .NET Support Voice-Kolumne: Problembehandlung bei ASP.NET

Diese Spalte an Ihre Bedürfnisse anpassen möchten Laden Sie Ihre Ideen zu Themen, die Sie interessieren und sollen Probleme in Zukunft Knowledge Base-Artikeln und Support Voice Spalten angesprochen. Sie können Ihre Ideen und ihr Feedback Bitten dafür Formular senden. Außerdem wird ein Link zu diesem Formular am Ende dieser Kolumne.

Einführung

Hallo und Willkommen bei der Ausgabe November ' 04 Support Voice-Kolumne. Ich möchte Jim Cheshire , einem Supporttechniker hier bei Microsoft ASP .NET für seine Unterstützung. Jim tolle Ideen für Support Voice-Kolumne wurde und sie freigeben möchten. In den nächsten Monaten Gérards Beiträgen suchen Sie und wie immer, senden Sie uns Ihre Vorschläge für zukünftige Kolumnen. Vielen Dank Jim!

Gérard hat Microsoft sechs Jahren Teams FrontPage, VB und ASP .NET gearbeitet. Während dieser Zeit er schrieb für Office Developer Center auf MSDN, und er ist der Autor auf FrontPage spezielle Edition mithilfe von Microsoft Office FrontPage 2003. Jim hat auch eine Website sieht er kostenlose Add-Ins für FrontPage ermöglichen Entwicklern mehr Microsoft-Produkten. Diese Adresse lautetZiehen Sie dann einen Stuhl Schuhe beginnen, lesen Sie unsere Spalte alle zur Problembehandlung bei ASP.NET und denken Sie daran, Ihre Ideen über den Link "Fragen für IT" jede Spalte veröffentlichen wir senden.

Jeremy

Problembehandlung bei ASP.NET

Haben Sie den Film Shrek gesehen? Star des Films, Shrek, ist ein oger, ein hässlich grüne Wesen mit schrecklich Hygiene. Früh im Film erklärt Shrek Komplexität ungeheuer darauf hin, dass "ungeheuer Zwiebeln sind. Sie haben Ebenen."

ASP.NET ist wie ein ungeheuer. Es hat viele Schichten - Webclient, jedes zwischengeschaltete Gerät Proxyserver, Webserver und Netzwerk ist und andere Ressourcen die Anwendung berührt. Alle diese Ebenen stellen ASP.NET schwierig zu beheben, sofern bekannt welches Tool verwendet und wie dieses Tool ordnungsgemäß verwenden.

Gefahr zu selbst veraltet dieser Reihe lernen Sie, wie einige der Tools verwenden verwenden wir in PSS Probleme. Ich gehe wie einige coole Tools verwenden:
  • Netzwerkmonitor
  • Fiddler
  • FileMon / Regmon
  • Debugtools für Windows (Windbg)
  • SOS (Windbg Erweiterung zum Debuggen von verwalteten Codes)
  • DBGClr
Ich gehe nicht auf INtime Details zur Verwendung dieser Tools, aber ich werde Ihnen eine solide Grundlage für die Verwendung dieser Tools, damit Sie die Ursache für viele Probleme aufgliedern können, die auftreten können.

Sniffer

Der erste Teil dieser Reihe behandelt Netzwerksniffer. Wir tauchen in.

Beispiel-Problem:

Eine ASP.NET Anwendung, die Windows-integrierte Authentifizierung verwendet und "Anonym" deaktiviert. Ein Benutzer berichtet, dass sie nicht auf die Website zugreifen können. Stattdessen werden sie wiederholt nach Benutzername und Kennwort aufgefordert. Sie glauben, dass die Berechtigungen für diesen Benutzer.

Diese Art von Problem ist der perfekte Kandidat für die Problembehandlung bei einen Netzwerksniffer verwenden. Ein Sniffer können Sie bestimmen, ob der Client Authentifizierungsinformationen an den Server gesendet wird. Netzwerksniffer verwenden wir bei Microsoft ist Netzwerkmonitor

Netzwerkmonitor

Sie können eine Zeit mit einer Version von Netzwerkmonitor von folgender Microsoft-FTP-Site herunterladen:
Das Kennwort für diese Zip-Datei ist Trace. Nach der Installation von Netzwerkmonitor finden Sie es durch Klicken auf Verwaltungund dann auf
Analyse-Funktionen.
Wählen die Netzwerkschnittstelle erfassen
Netzwerkmonitor zum ersten Mal starten, wird zunächst müssen Sie die Netzwerkkarte auswählen, die in Abbildung 1 dargestellte Dialogfeld verwenden möchten.
Figure 1: Choosing a network in Network Monitor
Abbildung 1: Auswählen eines Netzwerks in Netzwerkmonitor

Beachten Sie, dass in Abbildung 1 die ausgewählte Schnittstelle eine DFÜ-Verbindung oder VPN-Adapter wie in den Eigenschaften für die Schnittstelle. In den meisten Fällen sollten Sie eine der Schnittstellen als DFÜ- oder VPN-Verbindung wählen. Ich habe einen Screenshot des VPN-Adapter verwenden nicht wählen, weil ich wollte Sie deutlich sehen, wie es identifiziert wird. In fast allen Fällen ist der gewünschte Adapter wieder die wie ein Bild in Abbildung 1 aussieht.


Benötigen Sie die Netzwerkkarte ändern, die Sie erfassen möchten, können Sie das Dialogfeld durch Klicken auf die Option Netzwerke im Menü Sammeln dazu zugreifen.
Die Puffergröße festlegen
Netzwerkmonitor ist eine standardmäßige Sammlungspuffer 1 MB. Dies bedeutet, dass nach 1 MB Daten sammelt, beginnt die Verfolgung überschreiben. In vielen Fällen möchten Sie dieses Puffers erhöhen. Dazu klicken Sie auf Aufzeichnen und dann auf Puffer. Dies zeigt dieses Dialogfeld Puffer erfassen , in dem Sie die Puffergröße erhöhen. Hängt die Größe an, auf wie viel Netzwerkverkehr im Netzwerk angezeigt werden. Bei einem Problem mit Frames erstellen, denen Sie unmittelbar nach der Aufzeichnung starten möchten, möchten, sollte ein Puffer von 2 oder 3 MB mehr als ausreichend.


Sie sehen im Dialogfeld Puffereinstellungen erfassen die Rahmengröße ändern können. Dies ist hilfreich in Fällen, in denen Sie möchten nur die Header, die gesendet werden. Durch Verringern der Bildgröße, können Sie Speicherplatz im Puffer gespeichert und noch benötigten Header. Ich gehe ins Detail nicht auf, die in diesem Artikel.
Die Aufzeichnung starten
Jetzt einen Satz Puffer haben, können Sie Daten starten. Starten Sie auf verschiedene Arten erfassen:
  • Drücken Sie die Taste F10.
  • Klicken Sie auf Aufzeichnen Klicken Sie Menü
  • Klicken Sie auf Aufnahme starten Schaltfläche auf der Symbolleiste (diese Schaltfläche sieht wie eine Wiedergabeschaltfläche).
Wenn Sie Pakete mit dem Netzwerkmonitor erfassen, sehen Meter verschieben und ändern, Statistiken Sie in Abbildung 2 dargestellt. Wenn Sie etwas geschieht sehen, wenn Sie erfassen, müssen Sie wahrscheinlich die Netzwerkkarte ändern, die Sie erfassen.
Figure 2: Network Monitor while capturing packets
Abbildung 2: Netzwerkmonitor während der Erfassung von Paketen

Nachdem Sie im Netzwerkmonitor aufzeichnen gestartet haben, das Problem reproduzieren, die Sie erfassen und beenden Sie die Aufzeichnung durch Klicken auf das
Schaltfläche im Netzwerkmonitor auf Beenden
Erfassenund dann auf Beenden, oder indem Sie F11 drücken. Sie können nun die Daten untersuchen, die erfasst wurde.


Hinweis Netzwerkmonitor sammelt nur Daten, die über das Netzwerk geht. Daher kann normalerweise eine Anforderung für die Web-Anwendung nicht erfasst durch Suchen in der Konsole. In einigen Fällen können Browsen mit der IP-Adresse oder den vollqualifizierten Domänennamen auf dem lokalen Computer Sie.
Erfasste Daten
Nachdem Sie die Aufzeichnung beendet haben, können Sie gesammelten Daten nach auf erfassenund dann auf anzeigen.
Aufgezeichnete Daten anzeigen, oder Sie drücken F12. Standardmäßig sehen Sie alle Daten über die Verbindung ging während der Aufnahme wurden, wie in Abbildung 3 dargestellt.
Figure 3: Captured data in Network Monitor
Abbildung 3: Gesammelten Daten im Netzwerkmonitor

In diesem Fall würde nur Ansicht der HTTP-Pakete können von Vorteil sein. Erfolgt einfach durch Filtern der erfassten Daten nur das HTTP-Protokoll anzeigen. Um die erfassten Daten zu filtern, klicken Sie auf
Erfassen, und dann klicken Sie auf Filter, drücken Sie die Taste F8 oder klicken Sie auf die Symbolleisten-Schaltfläche ein Trichter aussieht.


Doppelklicken Sie im Dialogfeld Anzeigefilter auf die
Protokoll == jedes Filter im Dialogfeld Ausdruck angezeigt, wie in Abbildung 4 dargestellt.
Figure 4: The Expression dialog box provides powerful filtering capabilities
Abbildung 4: Dialogfeld Ausdruck bietet leistungsstarke Filterfunktionen

Netzwerkmonitor zeigt standardmäßig alle Protokolle. Um nur das HTTP-Protokoll anzuzeigen, klicken Sie auf Alle deaktivierenDoppelklicken Sie auf das HTTP-Protokoll, um es auszuwählen und klicken Sie auf OK. Netzwerkmonitor zeigt nur das HTTP-Protokoll.

Hinweis Filtern von Netzwerkmonitor vor dem erfassen, damit nur Frames erfasst werden, die dem Filter entsprechen, den Sie festlegen. In den meisten Fällen bevorzuge ich Filtern nach der Aufzeichnung.

Nach erfassten Pakete filtern, damit nur das HTTP-Protokoll angezeigt wird Netzwerkmonitor jeden Frame gesammelten HTTP-Daten angezeigt. Überprüfen Sie durch Doppelklicken auf einen Frame, ausführliche Informationen zu diesem Paket. In Szenarios, die wir beschäftigen, wollen wir ermitteln, ob der Client Authentifizierungsinformationen an den Webserver gesendet wurde. In Abbildung 5 dargestellten Bildschirmfoto zeigt die Antwort vom GET-Anforderung für die Seite ASP.NET. Beachten Sie, dass der Webserver reagiert hat mit Statuscode 401, dass auf der Webseite der Zugriff verweigert wurde.
Figure 5: Network Monitor showing an “Access Denied” response when authentication is required
Abbildung 5: Netzwerkmonitor eine Antwort "Zugriff verweigert" angezeigt, wenn Authentifizierung erforderlich ist

Anhand der WWW-Authenticate-Header, sehen in Abbildung 5 Sie, dass der Webserver (Negotiate) Kerberos und NTLM-Authentifizierung akzeptiert. Daher erwarten wir, dass der Client sendet Authentifizierungsinformationen automatisch nach der Meldung "Zugriff verweigert" sehen wir hier.
Sequenznummern
Zu Reaktion des Clients auf das Paket in Abbildung 5 dargestellten müssen Nummern in dieser Antwort betrachten. Das Konzept der Sequenznummern ist eine Überprüfung der Netzwerk-Traces häufig missverstanden. Sie sind der Schlüssel zum Verständnis der Reihenfolge in der Dinge aufgetreten ist.


Im mittleren Bereich in Abbildung 5 sehen Sie, dass das HTTP-Protokoll erweitert wurde, um alle HTTP-Header anzuzeigen. Über das HTTP-Protokoll ist das TCP-Protokoll, und Sie sehen die Sequenznummern und die Ack-Nummer als Teil des TCP-Segment. Die Sequenznummern (dargestellt durch Seq im TCP-Paket) bieten eine Möglichkeit, das bestimmte TCP-Segment identifiziert. Jede TCP-Sequenz sollte eine Bestätigung oder Ack dieser Sequenz begleitet.


Hier ist ein Ausschnitt aus der Spur eine HTTP GET-Anforderung:
11 4294967263.4294633595 LOCAL 00045A420DBC HTTP GET Request (from client using port 3134) DADATOP 192.168.0.4 IP 
TCP: .AP..., len: 402, seq:3410290480-3410290882, ack:1947093623, win:17520, src: 3134 dst: 80

Beachten Sie, dass die letzte laufende Nummer 3410290882. Daher müssen Sie die Antwort des Servers finden Rahmen finden, der diese Sequenz erkennt. Das heißt, suchen Sie eine Antwort mit einem Ack 3410290882. Hier ist diese Rahmen:
12 4294967263.4294636605 00045A420DBC LOCAL HTTP Response (to client using port 3134) 192.168.0.4 DADATOP IP TCP: .A...., len: 1460, seq:1947093623-1947095083, ack:3410290882, win:65133, src:  80 dst: 3134

Diese Zahlen sind wichtig, da es gibt Zeiten, wenn die Antwort der Anforderung ein angezeigt wird. Können nur bestimmte des Pakete werden soll diese Zahlen Segmente überprüfen.

Da wir über diese Spur zu sehen, ob der Client Authentifizierungsinformationen sendet suchen, können wir TCP-Segmente, die HTTP GET-Anfragen und die Antwort vom Server. Hier ist ein Ausschnitt aus der Frame, der Authentifizierungsinformationen vom Client sendet:
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (from client using port 3135) 192.168.0.2 192.168.0.4 IP HTTP: GET Request (from client using port 3135)
HTTP: Request Method = GET
HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx
HTTP: Protocol Version = HTTP/1.1
HTTP: Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.
HTTP: Accept-Language = en-us
HTTP: Accept-Encoding = gzip, deflate
HTTP: User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR
HTTP: Host = alien
HTTP: Connection = Keep-Alive
HTTP: Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA
44 77 3D 3D 0D 0A 0D 0A AAADw==....

Was sagt uns? Wir sehen, dass der Authorization-Header auf "Negotiate" festgelegt ist, und der Header über eine lange Zeichenfolge verfügt. Diese Antwort besagt, dass der Client und der Server eine NTLM-Verbindung ausgehandelt. Wir wissen, dass NTLM-Authentifizierung hier verwendet wird, wird ist das erste Zeichen ein ""t." Es wurde ein "Y" wäre es Kerberos. Der Header "Negotiate" statt "NTLM" festgelegt Dies bedeutet nicht, dass Kerberos oder NTLM verwendet jedoch, dass "Negotiate" die Autorisierungsmethode zuerst von Kerberos ist möglich. Wenn sie Kerberos verwenden kann, wird NTLM verwendet.

Abbildung 6 ist ein Screenshot des Rahmens oben angezeigt, sodass Sie sehen können, wo die Authentifizierungsinformationen gesendet wird. Beachten Sie, dass die HTTP-Header im mittleren Frame erweitert wurden, damit wir jeden Header sehen können.
Figure 6: The frame containing authentication information
Abbildung 6: Fenster mit Authentifizierungsdaten

Dieser Frame erzählt, dass der Client die meisten definitiv senden Authentifizierungsinformationen. Der Zugriff zu diesem Zeitpunkt verweigert wird, ist entweder weil der Benutzer nicht berechtigt, die Ressource oder weil die Authentifizierungsinformationen irgendwann über die Verbindung geändert wird.
Eine andere Möglichkeit zum Filtern
In vielen Fällen kann einen Server Problembehandlung sein, der viel Datenverkehr. In diesen Fällen sehen Sie eine große Anzahl von HTTP-Frames und möglicherweise schwierig, die richtige zu finden. Weitere Filterausdrücke verwenden, erhalten Sie einfach rechts, um die richtigen Frames.


Klicken Sie auf die Schaltfläche Filter , oder drücken Sie F8, Dialogfeld Anzeige bringen. Klicken Sie auf der rechten Seite auf Ausdruck um einen neuen Ausdruck hinzuzufügen. Es gibt zwei verschiedene Filter in diesem Szenario verwenden möchten: Filtern nach IP-Adresse als auch HTTP-Statuscode.

Filtern nach IP-Adresse klicken Sie auf der
Registerkarte und unten im linken Bereich bis angezeigt
IP. Erweitern Sie IP, und blättern Sie nach unten bis
Quelladresse. Wählen Sie == für die Beziehung und die IP-Adresse des Client-Computers, wie in Abbildung 7 dargestellt. Wenn Sie dies tun, sehen Sie nur, Frames eingegebene IP-Adresse aus.
Figure 7: Filtering by IP Address
Abbildung 7: Filtern nach IP-Adresse

Es ist wichtig zu beachten, dass viele Male die IP-Adresse möglicherweise nicht die beste Eigenschaft, Trace filtern. Oft werden Benutzern einen Webserver über einen Router oder eine Firewall treffen. In diesen Fällen werden die IP-Adresse die IP-Adresse des Routers oder Firewall und nicht auf dem Client häufig.

Sie können auch nach HTTP-Statuscode filtern. Möchten Sie schnell den Frame suchen, wo ein 401 an den Client gesendet wird, können Sie auf den HTTP-Statuscode 401 filtern. Wählen Sie hierzu HTTP in der
Protokoll: Eigenschaft aus, und erweitern Sie ihn. Scrollen Sie nach unten und klicken Sie dann auf
Statuscode. Wählen Sie == der Beziehung, klicken Sie auf der
Decimal (wichtig), Optionsfeld 401 in das Feld Wert eingeben, wie in Abbildung 8 gezeigt und dann auf
OK. Netzwerkmonitor zeigt nur die Rahmen, die dem Statuscode 401 gesendet wurde, wie in Abbildung 8 dargestellt.
Figure 8: Filtering by HTTP status code
Abbildung 8: Filtern nach HTTP-Statuscode
Nachdem Sie den Frame gefunden haben, wo der 401 gesendet wurde, können Sie auf der Tastatur, um den Filter zu deaktivieren dann F7 drücken. Wohin die 401 Frame noch markiert und können dann die benachbarten Frames für den Client auf die 401 untersuchen.

Fiddler-HTTP Proxy Debuggen

Wenn Sie Internet Explorer auf dem Clientcomputer, die Sie behandeln durchsuchen, können Fiddler (siehe Abbildung 9) anstelle des Netzwerkmonitors Sie die vom Client gesendeten HTTP-Informationen sammeln. Fiddler erfasst nur HTTP-Pakete und Internet Explorer direkt integriert.
Figure 9: Fiddler
Abbildung 9: Fiddler

In Abbildung 9 sehen Sie die 401-Antwort vom Server, und Sie sehen dann des Clients antwortet mit einer Negotiate -Sicherheitsheader (hervorgehoben). In diesem Fall tritt ein Laufzeitfehler auf, nachdem der Client-Authentifizierung sendet (dieses Problem ist), aber wir sehen, dass der Client ihrerseits per Kerberos-Ticket haben.

Sie können Fiddler von der folgenden Website herunterladen:

Was kommt als Nächstes?

Verwenden Sie den Netzwerkmonitor oder Fiddler, können Sie häufig dem Client ein Problem Authentifizierungsfehler ausschließen. Nächsten Monat gehen wir wie Filemon und Regmon von SysInternals. Diese Tools sind hilfreich bei Probleme im Dateisystem und in der Registrierung.
Wie immer gerne Ideen zu Themen soll in Zukunft Spalten oder in der Knowledge Base mit der
Bitten Sie für Form.
Eigenschaften

Artikelnummer: 891032 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback