一台电脑收到WCF回调,另外两台电脑未收到

本文关键字:电脑 两台 回调 WCF 一台 | 更新日期: 2023-09-27 17:58:07

有一个NET 4 WCF服务(在远程服务器中),我正在从我的NET 4客户端应用程序连接到它。该服务实现了回调,我的客户端应用程序能够成功地调用方法并接收回调。非常完美。

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

我还尝试在我的开发电脑上的虚拟机上运行该应用程序。它太能连接到服务并执行方法了,但再次从未收到任何回调!

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

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

[更新]

启用跟踪后,我发现以下异常。似乎达到了一些内部缓冲区限制。我不知道该怎么解决。以下是我在app.config:maxBufferPoolSize="16384000" maxReceivedMessageSize="16384000"中的一些当前限制。

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

一台电脑收到WCF回调,另外两台电脑未收到

在MaxArrayLength上搜索发现了这一点,这似乎起到了作用。希望这能帮助到一些人,让他们免于发疯。

我引用了重要的部分,以防博客宕机。

<binding name="MaintenanceServiceBindingConfiguration">
  <binaryMessageEncoding>
      <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
  </binaryMessageEncoding>
  <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
          maxReceivedMessageSize="2147483647" />
</binding>