如何从文件中读取WCF消息?

问题描述 投票:0回答:1

我正在开发一个访问第三方SOAP服务的WCF客户端,但是我无法反序列化消息。

我有原始消息的转储,但没有明显的方法来阅读它们。

如何使用WCF从文件中读取SOAP消息?

c# .net wcf soap
1个回答
1
投票

要从WCF中的流中读取消息,您需要一个MessageEncoder。对于SOAP消息,您可以通过TextMessageEncodingBindingElement获取。

以下代码对我有用:

TextMessageEncodingBindingElement binding = new TextMessageEncodingBindingElement(
    MessageVersion.Soap11, Encoding.UTF8);
MessageEncoderFactory factory = binding.CreateMessageEncoderFactory();
MessageEncoder encoder = factory.CreateSessionEncoder();

TypedMessageConverter tmc = TypedMessageConverter.Create(
    typeof(GetDataResponse), "getDataResponse");

GetDataResponse response;

using (FileStream fs = new FileStream(@"Response-20180918111722079.log",  FileMode.Open))
{   
    Message msg = encoder.ReadMessage(fs, 4096);
    response = tmc.FromMessage(msg);
}

// Use your response here.
© www.soinside.com 2019 - 2024. All rights reserved.