一段时间以来,我们一直在使用 PollingDuplexHttpBinding
来执行 Pub/Sub
消息传递。我们有一些不返回结果的方法,允许客户端订阅一些数据提要,然后服务通过 CallBack
契约(Contract)将数据推回。
刚才我们在OperationContract
中添加了一些Request/Reply
方法。由于客户端是 Silverlight 3,因此使用 async Begin() End()
模式调用这些方法。问题是我们无法使用 PollingDuplexHttpBinding
让它工作。我们总是会收到以下错误(使用客户端堆栈 HTTP 时):
The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.
通过浏览器堆栈,我们得到 HTTP 500: Not Found。
当切换到 BasicHttpBinding
时,Request/Reply
方法被调用得很好,但显然 Pub/Sub
方法不能与此绑定(bind)一起使用.
我们可以为每种类型的消息传递使用两个单独的端点,但我们宁愿不这样做,而且我觉得绑定(bind)只支持 Pub/Sub
模式很奇怪(尽管这是动机对于 PollingDuplexHttpBinding
)。
有人可以帮我解决这个问题吗?可能吗?
最佳答案
我们从来没有让它发挥作用。我们将 BasicHttpBinding 用于我们的 Silverlight 4 应用程序和我们的 WCF 4 服务之间的所有请求/回复操作。这些都是对 Per-Call 服务的异步方法调用(必须使用 Silverlight)。对于我们必须执行服务器推送的几种情况,我们有一个 session WCF 服务维护到 Silverlight 客户端的 PollingDuplexHttpBinding 连接,并且我们使用回调契约(Contract)和单向方法进行调用。
永远无法让请求/回复操作与 PollingDuplexHttpBinding 一起工作,但也从未找到有关此事的权威......
关于WCF、银光 : Is Request/Reply possible over PollingDuplexHttpBinding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551366/