【发布时间】:2011-08-02 22:00:54
【问题描述】:
我正在为我正在处理的一些服务创建一个 Web 测试客户端,作为要求的一部分,我希望能够显示完整的请求和响应 SOAP 消息(以及用户)。
我实现了一个 MessageInspector 类,它实现了IClientMessageInspector,最值得注意的是BeforeSendRequest 和AfterReceiveReply 方法来分别访问请求和响应消息。
捕获响应 (AfterReceiveReply) 效果很好,但捕获请求仅部分有效。我可以访问大部分消息,但是 SOAP 标头和 HTTP 标头都是空的。在 Fiddler 中查看请求,我可以看到 WCF 在 SOAP 消息中发送了一个安全标头和“一堆”HTTP 标头。
我的BeforeSendRequest 方法很简单……要点是……
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
this.RequestMessage = request.ToString(); // Security header is missing from message
// Try to get HTTP headers
object req; // req is always null
if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out req))
{
this.RequestHeaders = ((HttpRequestMessageProperty)req).Headers;
}
return null;
}
我不确定为什么缺少 HTTP 和安全标头。有没有更好的方法来做到这一点?
- 韦恩
【问题讨论】: