出于日志记录的目的,我想获取发送到WCF中实现的RESTful web服务的原始请求。
我已经实施了
IDispatchMessageInspector
AfterReceiveRequest
即使(尤其是)消息的内容无效。
例如,假设他们没有发送格式良好的XML文档,而是将字符串“你的妈妈”发布到我的服务端点。我想看看他们是怎么做的。不幸使用
MessageBuffer::CreateBufferedCopy()
除非消息的内容已经是格式良好的XML,否则将无法工作。
接收请求后
:
// The immediately following line raises an exception if the message
// does not contain valid XML. This is uncool because I want
// the raw bytes regardless of whether they are valid or not.
using (MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue))
{
using (MemoryStream stream = new MemoryStream())
using (StreamReader reader = new StreamReader(stream))
{
buffer.WriteMessage(stream);
stream.Position = 0;
Trace.TraceInformation(reader.ReadToEnd());
}
request = buffer.CreateMessage();
}
我想我需要满足原始要求
它变成了
Message
IDispatchMessageInspector
.