Diagnose-dump der HttpWebRequest-Objekt
Ist es eine gute Möglichkeit (andere als mühsames Abfragen der einzelnen Immobilie) zu bauen, einen Diagnose-dump-Zeichenfolge für eine HttpWebRequest-Klasse in C#? Für einfache Objekte, die man bekommen kann Weg mit new JObject(theObject)
, aber das funktioniert nicht bei HttpWebRequest (und toString
ist natürlich, wie nutzlos auf HttpWebRequest, wie es auf jedes C# - Objekt).
Gibt es keine Allgemeine Möglichkeit, dies zu tun für jede Teilmenge der C# - Objekte (andere als mit new JObject
wie ich bereits erwähnte)?
Update: ich habe festgestellt, dass mit JsonConvert.SerializeObject (ein Vorschlag in Hans' link) leistet gute Arbeit, dumping der HttpWebRequest (obwohl es nicht der Wunsch stream). Und ich habe dann das System.Net.Tracing Sachen zu arbeiten (obwohl Sie in der Dokumentation, wie üblich .NET Zeug, saugt, königlich).
- Review diese Frage, um weitere Optionen anzuzeigen.
- Sind Sie sich bewusst .NET-Ablaufverfolgung: blogs.msdn.com/b/dgorti/archive/2005/09/18/471003.aspx, und Sie können schreiben Sie Ihre eigene trace-listener.
- Ich habe versucht objectdumper aber nicht funktionieren, wenn Sie schreiben wollen, Halden-Objekte für die Fehlersuche prüfen Sie diese Frage verwendet, linqpad, es zu tun. stackoverflow.com/questions/6032908/... wenn das funktioniert lass es mich wissen
- auch haben Sie versucht, mit fiddler sehen die Anforderungen, wie Sie erzeugt werden, statt?
- Wie @dmportella vorgeschlagen, wenn Sie wirklich brauchen, um dump-streams zusammen mit dem request-Header - Sie sollten die Integration FiddlerCore in Ihrem code. Beachten Sie, dass die Anfrage/Antwort-Ströme sind nicht seekable, so kann man nicht alles zweimal Lesen. Mit dem abfangen des Datenverkehrs mit Fiddler können Sie sehen, ganze Anfrage - /Antwort-Prima.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser stellt sich heraus, ziemlich gut zu funktionieren:
Das problem ist nur, dass es nicht dump der zugehörigen Anfrage-stream. Ich habe nicht gefunden, einen Weg zu extrahieren, der aus dem request.
Als eine schnelle Antwort würde ich sagen, überschreiben Sie die
ToString()
Funktion, indem Sie Ihre eigene Variante der Klasse, wo der einzige Unterschied ist dieToString()
Methode; zum Beispiel:Für die Anforderung stream:
Für den request-stream, wie etwa das kopieren auf einen memory-stream??? Entlang der Linien von:
dies würde dann ermöglichen Sie das ursprüngliche requeststream allein und verwenden Sie die Kopie im Speicher-stream zu drucken/speichern etc, wie Sie benötigen.
Wird wieder ein string mit allen Werten haben kann, dass die Getter in
HttpWebRequest
🙂Alles, was Sie tun müssen ist, verwenden
HttpWebRequest2()
statt und es sollte in Ordnung sein:)Lassen Sie mich wissen, ob das hilft, oder wenn Ihr mehr Infos braucht/anderen Weg, es zu tun:)
Ich mochte GMasucci Antwort besser als JSON-Serialisierung, da die Serialisierung nicht extrahieren Sie die Werte der Header.
Ich geändert GMasucci Antwort auf eine extension-Methode, und verwenden StringBuilder und AppendFormat so, dass null-Werte nicht es sprengen, so dass, wenn Sie Stimmen dieser Antwort bitte bis-Abstimmung sein als gut. Ich auskommentiert, was zu sein scheinen deprecated Eigenschaften zu:
Ich geändert GMasucci und jaybro die Antworten zu verwenden, HttpRequest, für die Fälle, wenn es verwendet wird, anstatt HttpWebRequest.
Den oben genannten Lösungen sind ziemlich viel code, plus Sie müssen eine Menge Dinge tun
zu halten, dass code arbeiten in der Produktions-Umgebung für eine lange Zeit.
Und es gibt viele andere Probleme, die Sie haben zu lösen
nur mit der
Newtonsoft.Json.Linq.JObject
Lösung:Plus Sie wollen immer melden mehr info wie:
Es ist die beste Lösung, das löst all dies und noch viel mehr.
Verwenden Sie dieses Nuget-Paket: Desharp.
Es ist für die web und auch für desktop-Anwendungen. Sehr süchtig.
Es ist Desharp Github Dokumentation. Es hat viele Optionen für die Konfiguration.
Rufen Sie einfach überall:
Plus mehr:
Gibt es ein paar web-demos:
Versuchen zur Kasse jedem von Ihnen und was möglich ist, um dump-oder log auf HDD:
in der Tat für alles, was Sie finden können in .NET-Umgebung.
Ich glaube, es wird helfen.