System.Net (HttpWebRequest) - Ablaufverfolgung ohne Verwendung von Dateien oder der app.config?
Ich will bestimmte, aber nicht alle, HttpWebRequest-Verkehr in meiner Anwendung für debugging-Zwecke. Es ist ein web-Dienst von IIS gehostet wird.
Habe ich gelesen,Gewusst wie: Konfigurieren der Netzwerk-Ablaufverfolgung. Dies funktioniert gut, aber ich möchte nicht direkt die Ablaufverfolgung in einer Datei wegen möglicher Probleme mit den Zugriffsrechten auf die Datei system, Sensibilität der Daten, etc. Ich würde gerne erfassen direkt zu einem etwas Speicher, kann ich anschließend zu prüfen bzw. prüfen zu verschlüsseln und E-Mail. Vorzugsweise würde dies nicht bedeuten, änderungen an der app.config-Datei.
Ich habe Folgendes versucht, aber ich bin natürlich fehlt ein Schritt zum binden der TextWriterTraceListener in System.Net. Wie kann ich erfassen die System.Net Verkehr in meine StringWriter?
StringWriter sw = new StringWriter();
TextWriterTraceListener myListener = new TextWriterTraceListener(sw);
Trace.Listeners.Add(myListener);
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://www.microsoft.com");
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
Stream s = resp.GetResponseStream();
byte[] buf = new byte[4096];
while (s.Read(buf, 0, buf.Length) > 0) ;
s.Close();
myListener.Flush();
sw.Flush();
Edit: genauer gesagt, ich will den Gegenwert dafür zur Laufzeit, außer, dass ich nicht wollen, Ausgang zu gehen, sich zu vernetzen.melden Sie, ich will es zu gehen, um einen string-Puffer habe ich für diesen Zweck eingestellt.
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net.Sockets" tracemode="includehex">
<listeners>
<add name="System.Net.Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Sockets" value="Verbose"/>
</switches>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
InformationsquelleAutor David Chappelle | 2009-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Großen Dank @LMK, das ist schön. Ich hatte das gleiche problem, denn ich möchte zu Protokoll Netzwerk-Verkehr für die Fehleranalyse im code.
Mit VB-Code, angepasst an C# ich schrieb diese Methode:
Klasse ModifiedTraceFilter:
Spaß haben, Marko
HttpClient
?InformationsquelleAutor MarkoW
Können Sie erstellen Sie Ihre eigenen TraceListener Umsetzung. Die Beispiel(s) habe ich online gefunden, konfigurieren Sie Dinge, die zur Laufzeit nicht zeigen das arbeiten mit der system-trace-Quellen. Wenn Sie nichts dagegen haben, bekommen Ihre Hände schmutzig, Sie könnten versuchen, mit Reflexion zu wechseln private static bool System.Net.Die Protokollierung.s_LoggingEnabled (.NET 2).
Nehmen Sie das Beispiel in der folgenden Artikel an und schalten Sie es aus senden Sie e-mails an die Veröffentlichung eine statische Veranstaltung, die Sie abonnieren können, wenn Sie daran interessiert sind empfangen von trace-Nachrichten:
Erweitern Sie System.Diagnostik
Dieser bewirkt, dass die Leistung beeinträchtigt, da die Protokollierung aktiviert ist, werden alle Zeit (alles-oder-nichts-Konfiguration in web.config). (Siehe dieser Artikel und Kommentare, die erklären, die Bedeutung von entfernen der Standard-trace, um die Leistung zu verbessern.)
InformationsquelleAutor user423430
Hier ist, wie zu wireup System.Net logging-in-code per reflection. Code in VB, ist aber trivial zu konvertieren c#...
Setzen Sie diese in die Globale.asax Application_Start() mit was auch immer die Bedingungen, die Sie aktivieren möchten. Sie müssen möglicherweise die Flush () - tr vor dem Lesen.
InformationsquelleAutor LMK