如何从wcf服务发送大型xml文件

时间:2011-11-30 11:42:13

标签: c# xml wcf

下面的解决方案适用于将小型xml文件从WCF服务发送到客户端。

public interface IBatchDataExport
{
[OperationContract]
[XmlSerializerFormat]
[WebGet(UriTemplate = "export/{filename}")]
XmlDocument GetExportData(string filename);
}

...

public XmlDocument GetExportData(string filename)
{
System.Net.HttpStatusCode status = System.Net.HttpStatusCode.OK;
var xml = new XmlDocument();
xml.Load(filename);
return xml;
}

但对于大文件,我在xml.Load(filename)中得到OutOfMemoryException异常。

从wcf服务发送大型xml文件的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我建议将XML文件作为Stream发送。 Stream可以在数据很大时帮助读取数据,因此一次加载所有数据是不切实际的。

有关详细信息,请参阅File Transfer with WCF

答案 1 :(得分:2)

您可以发送 xml in chunks 并处理数据块中的xml。因为 XmlDocument 将整个xml加载到内存中,所以它可能会耗尽内存。