【问题标题】:wsDualHttpBinding failing with larger datasetswsDualHttpBinding 因数据集较大而失败
【发布时间】:2010-10-16 00:25:02
【问题描述】:

我在我的 wcf 服务中使用 wsDualBinding 来处理我的软件中的 2 路通信。一切似乎都很好,除非我调用一个方法来获取客户列表。如果在服务中我将查询结果限制为 2730 条记录,我可以在大约 1-2 秒内获得结果并将它们显示在数据网格中。如果我将结果限制为 2731(另外一个),我会收到以下错误:

http://localhost:8731/Design_Time_Addresses/Dispatch_Studio_Server/DispatchService/ 在配置的超时 (00:00:59.9990000) 内未收到回复。分配给此操作的时间可能是较长超时的一部分。这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息。请考虑增加操作超时(通过将通道/代理转换为 IContextChannel 并设置 OperationTimeout 属性)并确保服务能够连接到客户端。

在我的研究中,我了解到流式传输更适合较大的数据集,因此我还尝试使用流式传输而不是缓冲来设置 basicHttpBinding 端点,我得到了基本相同的结果。 2730 条记录工作正常,但 2731 条记录给我以下错误。

通过 HTTP 通道传输数据时发生错误(无法从传输连接读取数据:连接已关闭。)。

我不会准确地将 2730 条记录称为大型数据集。这让我相信还有其他原因导致了这个问题。

这是我的客户端配置:

<system.serviceModel>

这是我的服务器配置:

<system.serviceModel>

如您所见,我已尝试更改 maxMessageReceivedSize 和其他设置来解决此问题,但无济于事。

感谢您的宝贵时间。

【问题讨论】:

  • 您可以为客户端添加完整的配置吗?和服务器

标签: wcf dataset wsdualhttpbinding


【解决方案1】:

除了您永远不应该向客户端发送如此大量的数据(我怀疑客户端会针对完整的数据集执行任务)这一事实之外,您可能会达到 MaxSerializedObjectsInGraph 限制。

尝试在您的配置中添加包含以下内容的行为:

<dataContractSerializer maxItemsInObjectGraph="2147483646" />

您也可以考虑使用分页或过滤返回较小的结果集。

【讨论】:

  • 非常感谢,我花了 16 多个小时试图解决这个问题。我正准备为妈妈哭泣。现在我们可以继续我们的开发了。
猜你喜欢
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 2022-01-08
相关资源
最近更新 更多