我通过HttpPost接收XML到我的服务,并且我想记录收到的值以进行调试。Streams的奇怪问题
首先,我反序列化到一个实体是这样的:
XmlSerializer s = new XmlSerializer(typeof(TransactionResults));
TransactionResults t = (TransactionResults)s.Deserialize(stream);
这当然,移动流结束,所以我就不能登录原始值。
我试图寻求年初然后用StreamReader
读它,但它抛出一个NotSupportedException
作为一个测试,我试过了重新序列化(我创建了再次的所有对象,以避免重新使用它们看看是否有问题)
private static string GetContents(TransactionResults t)
{
XmlSerializer s = new XmlSerializer(typeof(TransactionResults));
MemoryStream stream = new MemoryStream();
s.Serialize(stream, t);
return new StreamReader(stream).ReadToEnd();
}
此方法返回一个空字符串。
(显然,如果我颠倒逻辑,价值得到记录,但我不能得到的对象)
我在做什么错?将数值反序列化为对象的最佳方法是什么和将它作为字符串记录?
我以为我尝试过使用memorystream * sigh *。谢谢! – juan 2010-06-28 14:57:24
这可能是要走的路,但只是另一种方式呈现;你也可以使用另一个流来封装任何流,并找到/记录作为基础流被使用的值(如果内存是一个问题) – Marc 2010-06-28 15:00:55
@Marc,那样我需要手工反序列化它,而不是使用XmlSerializer(要做两件事情在同一时间)。但我同意保存另一个流的创建可能是可行的。在我的情况下,内存不是问题 – juan 2010-06-28 15:04:20