从流中转换SOAP消息

在手持设备上有一个Windows Mobile .NET 3.5紧凑框架应用程序,该应用程序连接到消息头中需要WS-Security的SOAP服务器。

由于WSE不能在紧凑框架上工作,我设法创建了一个自定义绑定来与服务器通信并接收消息。

在自定义绑定编码器(一个MessageEncoder)中,我需要重写一些方法来读取收到的消息:

public override Message ReadMessage(ArraySegment<byte> buffer, BufferManager bufferManager, string contentType)
{
    bufferManager.ReturnBuffer(buffer.Array);
    MemoryStream memoryStream = new MemoryStream(buffer.Array, buffer.Offset, buffer.Count);
    // to quickly see the content of the message
    string s = Encoding.Default.GetString(buffer.Array, 0, buffer.Array.Count());
    Console.WriteLine("gna " + s);
    Message message = this.ReadMessage(memoryStream, buffer.Array.Length, null);
    return message;
}

public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType)
{
    XmlReader reader = XmlReader.Create(stream);
    return Message.CreateMessage(reader, maxSizeOfHeaders, this.MessageVersion);
}

第二种方法不能在紧凑框架中编译! 根据CreateMessage方法的定义,紧凑框架只允许几种可能性:使用BodyWriterXmlObjectSerializer而不是简单地使用上述标准代码中提供的XmlReader 。 问题在于,这两个对象是抽象的,需要实例化才能被该函数使用。

那么是否有一种方法可以在紧凑框架中从Stream创建消息? 有人有同样的问题吗? 是否有任何预构建对象可以用来替换这些BodyWriterXmlObjectSerializer

链接地址: http://www.djcxy.com/p/53667.html

上一篇: Convert a SOAP Message from a Stream

下一篇: waveInOpen, waveInClose issue freeing resources