一段时间以来,我们一直在使用 PollingDuplexHttpBinding
来进行 Pub/Sub
消息传递。我们有一些不返回结果的方法,允许客户端订阅一些数据馈送,然后服务通过 CallBack
契约(Contract)将数据推回。
刚才我们已经在我们的 Request/Reply
中添加了一些 OperationContract
方法。由于客户端是 Silverlight 3,因此使用 async Begin() End()
模式调用这些方法。问题是我们无法使用 PollingDuplexHttpBinding
让它工作。我们总是收到以下错误(使用客户端堆栈 HTTP 时):
使用浏览器堆栈,我们得到 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 连接,我们使用带有单向方法的回调协定来进行调用。
永远无法让请求/回复操作与 PollingDuplexHttpBinding 一起工作,但也从未找到有关此事的权威......
关于WCF,Silverlight : Is Request/Reply possible over PollingDuplexHttpBinding?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2551366/