在客户端检查HttpWebRequest以获取WCF调用?

时间:2014-12-18 18:37:18

标签: c# .net wcf client

我正在使用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? (我也为AfterReceiveReply做同样的事情)

1 个答案:

答案 0 :(得分:1)

似乎Visual Studio在附加调试器时会创建它。

if (!properties.ContainsKey(HttpRequestMessageProperty.Name))
                properties.Add("httpRequest", new HttpRequestMessageProperty());

来源:Property httpRequest' not present