【问题标题】:Closing a session with PollingDuplexHttpBinding使用 PollingDuplexHttpBinding 关闭会话
【发布时间】:2009-11-04 14:32:19
【问题描述】:

我正在使用 WCF PollingDuplexHttpBinding 通道将通知推送到 Silverlight 客户端。在大多数情况下它运行良好,但我正在努力让一些基本会话管理功能正常运行。

我遇到的最大问题是试图让服务器知道客户端已完成会话并且不再需要任何通知。客户端上的 CloseAsync 调用会阻止通道的客户端仅为该会话发送新通知的请求,并且它还会向服务器发送 CloseSession SOAP 请求。问题是通道的服务器端发回 404 表示它无法识别 CloseSession 操作。据我所知,该错误来自 PollingDuplexHttpBinding 通道的内部,并没有由应用程序造成,因此可以正确处理会话关闭。

有没有其他人遇到过这个问题并且可能找到了解决方法?

【问题讨论】:

    标签: wcf silverlight pollingduplexhttpbinding


    【解决方案1】:

    靠外表做不到,Gripes on PollingDuplexHttpBinding

    【讨论】:

      【解决方案2】:

      那篇抱怨文章太棒了,间接解决了我在通过 HTTP 执行 Duplex 时遇到的 Silverlight 工作非常缓慢的相关问题。基本上,问题是由于在网站中打开了 ASP.Net 会话状态并使用了 Silverlight 的 BroserHttp 堆栈(而不是 ClientHttp 堆栈)。

      Yavor(在本文中)很好地解释了问题:

      http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

      如果您遇到此问题,简单的解决方法是在调用您的服务之前为 ClientHttp 堆栈注册一个路由。这可以通过调用来完成:

      WebRequest.RegisterPrefix(requestUri.AbsoluteUri, WebRequestCreator.ClientHttp);
      

      其中 requestUri 是您的服务的 Uri。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-08-20
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多