Я создаю веб-тестовый клиент для некоторых служб, над которыми я работаю, и как часть требований для этого я хотел бы иметь возможность отображать полные сообщения SOAP с запросами и ответами (и заголовки HTTP дляuser).
Я реализовал класс MessageInspector, реализующий IClientMessageInspector , прежде всего методы BeforeSendRequest
и AfterReceiveReply
для получения доступа к сообщениям запроса и ответа соответственно.
Захват ответа (AfterReceiveReply) прекрасно работает, но перехват запроса работает только частично.Я могу получить доступ к большей части сообщения, однако заголовок SOAP и заголовки HTTP оба пусты.Просматривая запрос в Fiddler, я вижу, что WCF отправляет заголовок Security в сообщении SOAP и «кучу» заголовков HTTP.
Мой BeforeSendRequest
метод очень прост ... суть егоis ...
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 и Security.Есть ли лучший способ сделать это?