我有一个使用nettcpBinding(框架4.0)的WCF服务和客户端。客户端请求图像,服务器去查找该图像并通过回调将其发送回客户端。
WCF服务托管在Windows窗体应用程序中。我将所有活动都记录下来进行测试。
在我的开发机器上,系统运行完美。我可以从部署在测试服务器上的Service应用程序请求一个图像,然后将其返回并显示在我的客户端中。
只要将客户端复制到另一台计算机(访问同一服务器),就不会收到图像。观察服务器上的输出,客户端连接,请求,服务器获取图像。然后,当启动回调并且图像被序列化并发送时,服务器具有许多日志消息。这些都是正常记录的,就像在工作的Dev计算机上一样。只是图像永远不会显示在客户端上。客户端仍然连接到服务器,因为如果我关闭客户端,我会在服务器上显示“已断开连接”的消息。
我在客户端的回调方法的第一行放置了一个消息框进行测试,但是从不调用该方法。没有涉及防火墙。我尝试在Admin帐户下运行客户端,没有区别。我确实将客户端应用程序放在一个文件夹中,我在开发框上运行它,它可以工作,将它复制到另一台计算机上,没有。
如何诊断问题所在?有什么共同的原因吗?
编辑: 我应该提一下。服务应用程序在域内的计算机上运行,非工作客户端也在域内。我的开发机器在域外,我的安全性目前在绑定中设置为“无”。
答案 0 :(得分:3)
我终于明白了。
在回调方法上,我使用的属性IsOneWay=True
在写入客户端时屏蔽了服务器上的异常。
客户端实际上导致异常,因为ReaderQuote.MaxArrayLength
属性对于图像数据来说太小了。我仍然不明白为什么它在Dev机器上运行但在其他工作站上却没有。
然后我只是在我的自定义绑定中添加了一个新属性,将'MaxArrayLength'增加到合适的位置并且有效。