C# 在客户端检查HttpWebRequest是否有WCF调用?
我正在使用WCF客户端代理来调用web服务。我正在使用IClientMessageInspector向每个请求添加日志记录。我想从底层HTTP消息中获取信息,并发现我可以通过以下方式获取信息:C# 在客户端检查HttpWebRequest是否有WCF调用?,c#,.net,wcf,client,C#,.net,Wcf,Client,我正在使用WCF客户端代理来调用web服务。我正在使用IClientMessageInspector向每个请求添加日志记录。我想从底层HTTP消息中获取信息,并发现我可以通过以下方式获取信息: public class WCFLoggingInspector : IClientMessageInspector { public object BeforeSendRequest(ref Message request, IClientChannel channel)
public class WCFLoggingInspector : IClientMessageInspector
{
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var httpRequest = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
var method = httpRequest.Method;
return null;
}
}
在调试器中单步执行时,这可以正常工作。但是,在正常运行时,我从属性索引器中得到一个错误:“名为“httpRequest”的属性不存在”
有人能解释一下这里发生了什么,或者可以用另一种方式获取HttpRequest吗?(我也在为AfterReceiverly做同样的事情)似乎VisualStudio在附加调试器时创建了它
if (!properties.ContainsKey(HttpRequestMessageProperty.Name))
properties.Add("httpRequest", new HttpRequestMessageProperty());
来源:所以,WCF跟踪和消息日志记录还不够?您真的需要从
消息中提取各种信息吗?我唯一一次使用消息检查器时,对日志消息使用一个简单的request.ToString()
就足够了。看看这个StackOverflow答案,看看它是否符合您的预期@JohnSaunders是的,我尝试过跟踪,但确实符合我的需要。我需要记录我自己的数据(关于请求)和网络详细信息(消息大小、时间、http方法等)的组合。这是为了适应现有的日志记录系统。