Asp.net 使用webservice发送大数据

Asp.net 使用webservice发送大数据,asp.net,web-services,Asp.net,Web Services,我需要使用webservice发送大数据。数据大小将在300 MB到700 MB之间。webservice从SQL数据库生成数据并发送到客户端。它是数据集的形式,大约有20到25个表。 我尝试了来自Artial和Microsoft WSE 3.0示例的解决方案,但主要是它给了我“System.OutOfMemoryException” 我认为问题在于WebService在服务器的内存中缓冲数据,并且它跨越了限制 我想两个交替, (1) 逐个发送数据表,但有时一个数据表可能有大约100MB到150

我需要使用webservice发送大数据。数据大小将在300 MB到700 MB之间。webservice从SQL数据库生成数据并发送到客户端。它是数据集的形式,大约有20到25个表。 我尝试了来自Artial和Microsoft WSE 3.0示例的解决方案,但主要是它给了我“System.OutOfMemoryException”

我认为问题在于WebService在服务器的内存中缓冲数据,并且它跨越了限制

我想两个交替, (1) 逐个发送数据表,但有时一个数据表可能有大约100MB到150MB的数据 (2) 在服务器上写入文件并使用HttpWebRequest传输(可以使用FTP,但当前无法访问FTP服务器)

有人能建议使用webservice解决此问题吗


谢谢,

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

如果您知道需要传输的表的结构,那么创建一组可序列化的对象,并发送这些对象的数组将有助于显著减少数据负载

如果必须使用
数据集
,请查看启用BinaryRemoting

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

在通过这种方式减少数据负载后,最好将文件写入http服务器上的一个可公开访问的位置。通过http托管,客户端可以比ftp更轻松地下载文件。您可以通过授予用户的适当权限来控制对这些http文件夹的访问。

您是否尝试过web服务的BufferResponse属性。下面是一个链接是的,Microsoft WSE 3.0的示例代码具有[WebMethod(BufferResponse=false)]。但它仍然给出了OutOfMemory例外,我想使用DataReader转换它,但我没有找到任何方法在不使用webservice缓冲的情况下传递数据。是的,最后一种方法是创建文件并通过Http使用。