使用webservice发送大数据

时间:2012-10-29 10:36:57

标签: asp.net web-services

我需要使用webservice发送大数据。数据大小介于300 MB到700 MB之间。 Web服务从SQL数据库生成数据并发送到客户端。它采用DataSet的形式,大约有20到25个表。 我尝试使用artical,"How to: Enable a Web Service to Send and Receive Large Amounts of Data"和Microsoft WSE 3.0的示例解决方案,但主要是它给了我“System.OutOfMemoryException”。

我认为问题是WebService缓冲服务器内存中的数据并且超过限制。

我认为两个候补,     (1)逐个发送DataTable,但有时候一个DataTable可以有大约100MB到150MB的数据     (2)在服务器上写文件并使用HttpWebRequest传输(可能的FTP,但目前无法访问FTP服务器)

任何人都可以使用webservice建议解决此问题的方法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

数据集将加载内存中的所有数据。它不适合传输大量数据。 DataSets在序列化时会携带大量额外信息。

如果您知道需要传输的表的结构,请创建一组Serializable个对象,并发送一组这些对象将有助于显着降低数据有效负载。

如果您必须使用DataSet,请查看启用BinaryRemoting。

BinaryFormatter bf = new BinaryFormatter();
myDataSet.RemotingFormat = SerializationFormat.Binary;
bf.Serialize(s, ResultDataSet);

通过这种方式减少数据有效负载后,最好将文件写入http服务器上的公共可访问位置。通过http托管它允许客户端比ftp更容易下载文件。您可以通过授予用户的适当权限来控制对这些http文件夹的访问。

相关问题