我们已经使用PollingDuplexHttpBinding
一段时间来发送Pub/Sub
消息。我们的方法不返回允许客户订阅某些数据馈送的结果,然后服务通过CallBack
合同将数据推回。
刚才我们一直在为Request/Reply
添加一些OperationContract
方法。由于客户端是Silverlight 3,因此使用async Begin() End()
模式调用这些方法。问题是我们无法使用PollingDuplexHttpBinding
使其工作。我们总是得到以下错误(当使用客户端堆栈HTTP时):
服务器未提供有意义的回复;这可能是由于合同不匹配,过早的会话关闭或内部服务器错误造成的。
使用浏览器堆栈,我们得到HTTP 500: Not Found.
切换到BasicHttpBinding
时,Request/Reply
方法被称为完全正常,但显然Pub/Sub
方法无法与此绑定一起使用。
我们可以为每种类型的消息传递使用两个单独的端点,但不愿意,而且对我来说似乎很奇怪,绑定只支持Pub/Sub
模式(即使这是{{1}的动机})。
有人可以为我清除这个吗?有可能吗?
答案 0 :(得分:2)
我们从来没有让这个工作。我们在Silverlight 4应用程序和WCF 4服务之间的所有请求/回复操作中使用BasicHttpBinding。这些都是对Per-Call服务的异步方法调用(必须使用Silverlight)。对于我们必须进行服务器推送的几种情况,我们有一个Sessionful WCF服务,维护与Silverlight客户端的PollingDuplexHttpBinding连接,我们使用单向方法的Callback Contracts进行调用。
永远无法获得使用PollingDuplexHttpBinding的请求/回复操作,但从未在此事上找到权限......