【问题标题】:WCF IDispatchMessageInspectorWCF IDispatchMessageInspector
【发布时间】:2015-05-26 08:28:58
【问题描述】:

有一条字符串形式的消息通过了所有测试。当试图创建它并通过 BeforeSendReply 返回一条消息时,然后飞签名并且消息将无效。可能是什么原因?

如何从字符串创建消息?

【问题讨论】:

    标签: c# .net wcf


    【解决方案1】:

    您可以通过这种方式获取消息:

    public void BeforeSendReply(ref Message reply, object correlationState)
        {
                MessageBuffer buffer = reply.CreateBufferedCopy(Int32.MaxValue);
                reply = buffer.CreateMessage();
                string message = buffer.CreateMessage();
                ...
    

    【讨论】:

    • XmlReader xmlReader = XmlReader.Create(new StringReader(innerXml));消息 modifiedRequest = Message.CreateMessage(xmlReader, int.MaxValue, reply.Version);回复 = modifiedRequest;
    • XML 是带有安全头的消息 schemas.xmlsoap.org/soap/envelope">
      ..... ........
      w3.org/2001/XMLSchema-instance" xmlns: xsd="w3.org/2001/XMLSchema" xmlns:u="docs.oasis-open.org/wss/2004/01/…">
    • signedResponse = Cryptography.MessageSigner.Sign(msg.ToString()); var innerXml = signedResponse.InnerXml; XmlReader xmlReader = XmlReader.Create(new StringReader(innerXml));消息 modifiedRequest = Message.CreateMessage(xmlReader, int.MaxValue, reply.Version);回复 = modifiedRequest;
    • 我收到消息,然后在处理后签名。我只需要把它拿回来。
    • 有人知道吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多