我从我的 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。