0

我从我的 NET 4 客户端应用程序连接到一个 NET 4 WCF 服务(在远程服务器中)。该服务实现回调,我的客户端应用程序能够成功调用方法并接收回调。刚刚好。

现在,如果我将可执行文件(和配置)复制到托管 WCF 服务的远程服务器(独立),应用程序可以成功执行方法,但它永远不会收到任何回调!

我还尝试在我的开发 PC 上的虚拟机上运行该应用程序。它也能够连接到服务并执行方法,但再一次永远不会收到任何回调!

我已经尝试了终极测试。我同时在所有 3 个地方运行了该应用程序。所有 3 都初始化正常并成功调用服务上的方法,但一旦触发事件,只有我的开发 PC 收到回调!另外两人沉默。所有 3 个应用程序都是从一个共享文件夹启动的,因此可以有效地运行相同的代码并依赖相同的配置。

我的开发 PC 有什么特别之处,可以成为唯一收到回调的 PC?任何线索都非常受欢迎。我希望这会给某人敲响警钟。

[更新]

启用跟踪后,我发现以下异常。似乎达到了一些内部缓冲区限制。我不知道如何解决这个问题。这些是我当前对 app.config 的一些限制:maxBufferPoolSize="16384000" maxReceivedMessageSize="16384000"

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:result时出错。InnerException 消息是“反序列化 MatchResult 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (16384)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。有关更多详细信息,请参阅 InnerException。

4

1 回答 1

1

谷歌搜索 MaxArrayLength发现这似乎可以解决问题。希望这可以帮助某人并节省他们发疯的时间。

我引用了重要的部分,以防博客出现故障。

<binding name="MaintenanceServiceBindingConfiguration">
  <binaryMessageEncoding>
      <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
  </binaryMessageEncoding>
  <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
          maxReceivedMessageSize="2147483647" />
</binding>
于 2013-02-07T16:29:39.377 回答