C#CF - 从流转换SOAP消息

时间:2017-03-22 12:11:57

标签: c# compact-framework soap-client

我在手持设备上安装了Windows移动.NET 3.5紧凑框架应用程序,该应用程序连接到消息头中需要WS-Security的SOAP服务器。

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

在Custom Binding Encoder(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);
}

第二种方法不能在紧凑的框架中编译!根据the definition of the CreateMessage方法,紧凑框架只允许几种可能:使用BodyWriter或{{1而不是简单地使用上面标准代码中提供的XmlObjectSerializer。问题是这两个对象是抽象的,需要实例化才能被函数使用。

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

0 个答案:

没有答案