2009-07-31 3 views
2

내가 이론적으로 정말 간단 뭔가를 시도 : 메시지 문자열을 역 직렬화, 여기에 코드입니다 :XmlException "TextMessageEncodingBindingElement와 함께"예상치 못한 파일 끝 "이 나타나는 이유는 무엇입니까?

[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를 얻을. 내 코드에 문제가 있습니까?

미리 답변 해 주셔서 감사합니다.

답변

8

에 전화하여 StreamWriter에 전화를 걸기 전에 스트림에서 읽어야합니다 (또는 더 나은 방법은 using- 블록에 넣는 것이 좋습니다).

+0

감사합니다. 얼마나 부끄러 웠습니다. -_- –

+0

스트림 주변도 마찬가지입니다. –

+0

'MemoryStream'은 캐싱하지 않습니다. (꽤 무의미합니다 - 왜 메모리를 지원하는 스트림에 메모리 캐시를 사용합니까?), 어쨌든 다 치지는 않을 것입니다. –

관련 문제