メソッドを公開する WCF サービスを実装してい[OperationContract]
ます[XmlSerializerFormat]
。本文が有効な XML ではないリクエストを受け取ることがあります。そのような場合、元の本文をログに記録したいので、有効な XML を構成しなかった理由を知ることができます。ただし、Message オブジェクトから取得することはできません。私の試行を参照してください (IDispatchMessageInspector インターフェイスを実装することによる):
public object IDispatchMessageInspector.AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
request.ToString(); // "... Error reading body: System.Xml.XmlException: The data at the root level is invalid. Line 1, position 1. ..."
request.WriteBody(...); // Serialization Exception, also in WriteMessage and other Write* methods
request.GetReaderAtBodyContents(...); // Same
HttpRequestMessageProperty httpRequest = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]; // no body in httpRequest
}
ウォッチを見ると、request.messageData に本文が含まれているように見えますが、これはプライベート メンバーです。
逆シリアル化を試みずにメッセージ バッファを取得するにはどうすればよいですか?