0

我正在.net Web 服务上调用 WebMethod。它可以提取足够的数据以在客户端上引发 OutOfMemoryException,因为它超出了 Windows 进程允许的 2GB 限制。

由于截止日期,我不想通过添加代码将调用拆分成更小的块来解决这个问题。我可以在客户端上使用 LARGEADDRESSAWARE 标志,但是客户端的进程仍然会有限制(3GB-4GB)。在这一点上,我只能说这样会更好,但我不能说永远就足够了(客户端是一个 WinForm,将通过 CD 发布给客户,所以我只尝试过一次) .

最好的方法是调用 WebMethod 并将方法的结果直接写入硬盘驱动器上的文件,而不是写入我的 .NET 代码中的变量。然后我可以一次从文件中读取一个内存友好的文件块。据我所知,Web 服务没有办法做到这一点。

有没有办法用 Web 服务做到这一点?您是否可以想出其他创造性的解决方案来解决我的 OOM 问题?

4

1 回答 1

0

您还没有说要写入哪个磁盘。您可以想象将输出写入服务上的文件夹,并通过文件共享公开该文件夹。然后,您的服务会将服务器上(临时)文件的路径返回给客户端。

我想您是在谈论传统的 ASMX 服务?他们在创建请求和响应消息的多个副本时存在序列化问题。尝试在客户端上使用“添加服务引用”而不是“添加 Web 引用”。

于 2013-02-06T14:15:09.057 回答