【发布时间】:2016-10-26 08:39:11
【问题描述】:
我需要创建一个类,以便在应用程序中拦截 httpRequest(因此不需要代理)并记录请求和响应详细信息。 可以使用任何方式创建 HttpRequest(HttpClient、HttpWebRequest、Helper 库,如 RestSharp .. 任何东西),这就是我希望创建的动态类包含在 HttpRequest 初始化时触发的事件。
我已经使用了网络跟踪,但我只能记录字符串,那么有没有更安全的方法来拦截请求和响应对象而不是解析字符串
public class DebugTraceListener : System.Diagnostics.TextWriterTraceListener
{
public override void Write(string message)
{
using (StreamWriter w = File.AppendText("D:\\Log\\log2.txt"))
{
Log(message, w);
}
}
public override void WriteLine(string message)
{
using (StreamWriter w = File.AppendText("D:\\Log\\log2.txt"))
{
Log(message, w);
}
}
public static void Log(string logMessage, TextWriter w)
{
w.WriteLine(" :{0}", logMessage);
w.WriteLine("-------------------------------");
}
}
【问题讨论】:
-
“网络追踪”是什么意思?如果您在
<system.diagnostics>中启用<switch name="System.Net" value="verbose"/>,那么您将同时获得请求和响应。关于格式:它将使用标准 .NET 机制进行记录,然后您可以编写自己的侦听器(如果您不喜欢标准的TextWriterTraceListener格式)。当然,如果你想解释它们,你需要理解日志消息。 -
我用了这个msdn.microsoft.com/en-us/library/a6sbz1dx(v=vs.110).aspx .. 所以如果我写自己的listner,我可以控制输出格式?!
-
@AdrianoRepetti 我可以使用代码而不是 web.config 来做所有事情吗?
-
是的,you can。请注意,要更改 format,您可能需要 parse System.Net 类的诊断输出(它可能会随着时间而改变......)。如果您需要高级定制,这可能不是最简单的任务。
-
@AdrianoRepetti 我创建了一个从 TextWriterTraceListener 扩展的客户侦听器,但请求和响应作为字符串传递,我将不得不解析所有内容并删除我不需要的额外字符串..等等,是否有比字符串更安全的拦截请求和响应的方法。
标签: c# .net logging httprequest tracking