我正在使用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做同样的事情)
答案 0 :(得分:1)
似乎Visual Studio在附加调试器时会创建它。
if (!properties.ContainsKey(HttpRequestMessageProperty.Name))
properties.Add("httpRequest", new HttpRequestMessageProperty());