我正在开发一个将数据传递到自定义客户端应用的网络应用。
当数据超过某种“小”尺寸时,我会遇到异常。由于最终用户可能会使用越来越大的数据大小,因此我将WCF函数的返回值切换为数据集的ID。
接下来,我将客户端转换为使用ID从一些简单的ASPX页面检索数据。这很好,但意味着界面不一致。
编辑:我不确定我是如何错过返回Stream的,但是我确实错过了。有没有人遇到过WCF上的Streams问题?
除连接断开外,从ASPX页面通过HTTP流读取文件有什么问题吗?
我认为我缺少WCF的功能(如oob数据)。但是,C#/ .NET在线帮助要么非常差,要么严重破坏,就像我的机器上安装的一样。
感谢。
[编辑] 顺便说一下,在我的情况下,“大量数据”是用户输入驱动的,但需要至少20MiB。
答案 0 :(得分:3)
答案 1 :(得分:0)
你看到的例外情况是什么?您是否可以阅读XML,因为超出了读者配额?
如果是这样,我想我知道可以解决的问题。请参阅下面的示例wsHttpBinding。您的异常应该可以帮助您确定需要修复哪个参数。您可以为读者提供maxReceivedMessageSize和配额。如果这不起作用,请告诉我,请提供更多数据。
<wsHttpBinding>
<binding name="bindingName" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" maxBufferPoolSize="524288" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="3145728" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</wsHttpBinding>
答案 2 :(得分:0)
你可以去http://weblogs.asp.net/cibrax/archive/2008/06/10/streaming-large-content-with-wcf-and-deferred-execution.aspx这个地址,我不适合你的pb,但这也是一个想法。
答案 3 :(得分:0)
据我了解@Eugene提到的Large Data and Streaming文章, 必须切换所有通信的传输模式,这意味着它会关闭一些完整性检查。
因此,我最终使用了半自定义HTTP客户端类,其中:
它不漂亮但它有效。不幸的是,IIS或客户端应用程序崩溃可能 将临时文件保留在服务器硬盘上,但它们是本地化的,可能是 清理服务创建。
答案 4 :(得分:0)
在客户端和服务器端设置maxItemsInObjectGraph对我有用。
(不要忘记客户端。) http://social.msdn.microsoft.com/Forums/en/wcf/thread/0af69654-2d89-44f3-857a-583b57844ca5