C# 在客户端检查HttpWebRequest是否有WCF调用?

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)

我正在使用WCF客户端代理来调用web服务。我正在使用IClientMessageInspector向每个请求添加日志记录。我想从底层HTTP消息中获取信息,并发现我可以通过以下方式获取信息:

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方法等)的组合。这是为了适应现有的日志记录系统。