WCF REST - 如何读取流到文本

时间:2010-12-01 17:31:44

标签: wcf rest stream

我有一个WCF REST服务。每个传入消息的XML主体被反序列化到我的对象中,如下所示:

            private static Message MyMethod(Stream stream)
            {
                try
                {
                    var serializer = new XmlSerializer(typeof(MyObject));
                    var myObject = (MyObject)serializer.Deserialize(stream);
                    //do stuff
                }
                catch (InvalidOperationException invEx)
                {
                    //write stream (xml) to error log
                }
                //etc

            }

我希望能够在反序列化失败时编写XML来记录。我尝试过的所有内容都会产生一个空字符串。这甚至可能吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以轻松地将整个内容作为string而非Stream,并从中加载/反序列化。 Stream是否有特殊原因?

或者(更好的是,IMO),您可以将要反序列化的对象指定为DataContract并在操作合同中要求XML并让WCF框架为执行工作你。

答案 1 :(得分:0)

您是否尝试在写入错误日志之前重新定位流?

stream.Position = 0;