0

サービスの応答を監視する必要があります。メソッドGetReaderAtBodyContents()で本文を取得しますが、WCF がエラー メッセージを送信すると、メッセージが送信されていないため、本文を読み取ることができませんxmlelement("Text cannot be written outside the root element.")。テキストに を含めることができないことがわかりました<binary>。エラーメッセージの本文を取得したことを誰が知っていますか?

4

2 に答える 2

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() でエラーが発生します。メッセージには xmlelement がないため<Binary>、どのように解決するのでしょうか?

于 2012-09-18T08:33:55.487 に答える
0

これを試してください: http://wcfpro.wordpress.com/2011/01/04/catching-the-real-exception/

于 2012-09-17T16:54:42.987 に答える