2012-09-17 1 views
0

서비스 응답을 모니터링해야하는데 GetReaderAtBodyContents() 메서드가있는 본문을 가져 오지만 WCF가 오류 메시지를 보내면 메시지가 xmlelement("Text cannot be written outside the root element.")이 아니기 때문에 본문을 읽을 수 없습니까? 나는 그 텍스트가 <binary>을 가질 수 없다는 것을 알았다. 누가 오류 메시지의 본문을 가지고 알아?wcf inspector에서 메시지 본문을 얻는 방법

답변

1

형식은 RAW이며, 본인은 몸 :

var bodyReader = message.GetReaderAtBodyContents(); 
      bodyReader.ReadStartElement("Binary"); 
      var bodyBytes = bodyReader.ReadContentAsBase64(); 
      writer = XmlDictionaryWriter.CreateBinaryWriter(ms); 
      writer.WriteStartElement("Binary"); 
      writer.WriteBase64(bodyBytes, 0, bodyBytes.Length); 
      writer.WriteEndElement(); 
      writer.Flush(); 
      ms.Position = 0; 
      reader = XmlDictionaryReader.CreateBinaryReader(ms, XmlDictionaryReaderQuotas.Max); 
      body = Encoding.UTF8.GetString(bodyBytes); 
      ms.Position = 0; 
      newMessage = Message.CreateMessage(reader, int.MaxValue, message.Version); 
      CopyMessagePropertiesAndHeaders(message, newMessage); 
      message = newMessage; 

그러나 경우 반환 오류 메시지, GetReaderAtBodyContents() 메시지가 <Binary>를 XMLELEMENT하지 않았기 때문에, 어떻게, 오류가 발생 그것을 해결할 수 있습니까?