代码之家  ›  专栏  ›  技术社区  ›  Gregory Higley

如何在WCF中获取请求的原始字节数?

  •  1
  • Gregory Higley  · 技术社区  · 16 年前

    出于日志记录的目的,我想获取发送到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 .

    2 回复  |  直到 16 年前
    推荐文章