Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
托管在basicHttpBinding和wsDualHttpBinding上的WCF回调服务_Wcf_Callback_Basichttpbinding_Wsdualhttpbinding - Fatal编程技术网

托管在basicHttpBinding和wsDualHttpBinding上的WCF回调服务

托管在basicHttpBinding和wsDualHttpBinding上的WCF回调服务,wcf,callback,basichttpbinding,wsdualhttpbinding,Wcf,Callback,Basichttpbinding,Wsdualhttpbinding,我有一个通过wsDualHttpBinding托管的回调服务。我希望添加一个客户端,该客户端将轮询数据,而不是接收回调(将是一个使用wince进行演示的移动设备)。我很好奇这样做的最好方法是什么?您不能使用NetCFSvcUtil和wsDualHttpBinding托管的服务创建客户端代理(我理解这一点),但不能通过basicHttpBinding托管回调服务。我确实需要在basicaHttpBinding(客户端将轮询数据)和wsDualHttpBinding(回调将通知客户端数据)上托管相同

我有一个通过wsDualHttpBinding托管的回调服务。我希望添加一个客户端,该客户端将轮询数据,而不是接收回调(将是一个使用wince进行演示的移动设备)。我很好奇这样做的最好方法是什么?您不能使用NetCFSvcUtil和wsDualHttpBinding托管的服务创建客户端代理(我理解这一点),但不能通过basicHttpBinding托管回调服务。我确实需要在basicaHttpBinding(客户端将轮询数据)和wsDualHttpBinding(回调将通知客户端数据)上托管相同的服务。在不创建两个单独的服务来承载相同的数据的情况下,您对处理此问题的最佳方法有何想法?

您所说的两个单独的服务承载相同的数据是什么意思?您是否希望共享相同的服务实例来处理wsDualHttpBinding和basicHttpBinding请求

您当前的问题是双工通信的服务接口不能用于basicHttpBinding。您必须创建第二个服务契约,并在同一个服务中实现它。在这种情况下,您可以为服务公开两个端点:一个是带有WSDualHttpBinding的双工端点,另一个是带有BasicHttpBinding的端点。端点必须具有不同的相对地址。从客户机的角度来看,这些端点是独立的服务——每个端点都需要独立的客户机代理。因此,除非您的服务是单例的,否则每个客户端代理都将有新的服务实例。新的服务实例意味着没有数据共享


有一些可能修改此行为,但这意味着要替换实例提供程序。

谢谢。同一服务的多个服务合同似乎是我所缺少的。我希望我的服务是一个单例服务,而且使用回调服务的客户端似乎没有与使用非回调服务契约的客户端“共享”数据。不管客户使用何种合同,服务不应该保存相同的数据吗?我有InstanceContextMode=InstanceContextMode.Single,而且它在客户端共享同一个服务契约之前是有效的。谢谢你的帮助。