为什么我使用TextMessageEncodingBindingElement获得XmlException“意外的文件结尾”?

时间:2009-07-31 18:34:52

标签: .net wcf

我尝试在理论上做一些非常简单的事情:将字符串反序列化为Message,这里是代码:

[TestMethod]
public void EncoderErrorTest()
{
    var message = "<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:a=\"http://www.w3.org/2005/08/addressing\"><s:Header><a:Action s:mustUnderstand=\"1\">http://tempuri.org/IHelloWorldService/SayHello</a:Action></s:Header><s:Body><SayHello xmlns=\"http://tempuri.org/\"><name>Nico</name></SayHello></s:Body></s:Envelope>";

    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(message);
    stream.Position = 0;
    var soapMessage = new TextMessageEncodingBindingElement().CreateMessageEncoderFactory().Encoder.ReadMessage(stream, 99999);
    Assert.IsNotNull(soapMessage);
}

但是在反序列化期间,我得到一个XmlException“意外的文件结束”。 我的代码有问题吗?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:8)

在您从流中读取之前尝试在Flush上调用StreamWriter(或者更好的是,将其放在using - 块中)。