下面的解决方案适用于将小型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文件的最佳方法是什么?
答案 0 :(得分:2)
我建议将XML
文件作为Stream发送。 Stream可以在数据很大时帮助读取数据,因此一次加载所有数据是不切实际的。
有关详细信息,请参阅File Transfer with WCF
答案 1 :(得分:2)
您可以发送 xml in chunks 并处理数据块中的xml。因为 XmlDocument 将整个xml加载到内存中,所以它可能会耗尽内存。