Wcf 使用PollingDuplexHttpBinding关闭会话
我正在使用WCF PollingDuplexHttpBinding通道将通知推送到Silverlight客户端。在大多数情况下,它工作得很好,但我正在努力让一些基本会话管理功能正常工作 我遇到的最大问题是试图让服务器知道客户端已完成会话,不再需要任何通知。客户端上的CloseAsync调用停止通道的客户端仅发送该会话的新通知请求,并且还向服务器发送CloseSession SOAP请求。问题是通道的服务器端发回404,表示它无法识别CloseSession操作。据我所知,错误来自PollingDuplexHttpBinding通道的内部,而不是应用程序,因此可以正确处理会话关闭Wcf 使用PollingDuplexHttpBinding关闭会话,wcf,silverlight,pollingduplexhttpbinding,Wcf,Silverlight,Pollingduplexhttpbinding,我正在使用WCF PollingDuplexHttpBinding通道将通知推送到Silverlight客户端。在大多数情况下,它工作得很好,但我正在努力让一些基本会话管理功能正常工作 我遇到的最大问题是试图让服务器知道客户端已完成会话,不再需要任何通知。客户端上的CloseAsync调用停止通道的客户端仅发送该会话的新通知请求,并且还向服务器发送CloseSession SOAP请求。问题是通道的服务器端发回404,表示它无法识别CloseSession操作。据我所知,错误来自PollingD
有没有其他人遇到过这个问题,也许找到了解决办法?看样子是不行的。那篇牢骚文章真是太棒了,间接地解决了Silverlight在通过HTTP进行双工时工作非常慢的相关问题。实际上,这个问题是由在网站中打开ASP.Net会话状态并使用Silverlight的BroserHttp堆栈(而不是ClientHttp堆栈)引起的 Yavor(在本文中)很好地解释了这个问题: 如果您遇到此问题,简单的修复方法是在调用服务之前注册ClientHttp堆栈的路由。只需调用以下命令即可完成此操作:
WebRequest.RegisterPrefix(requestUri.AbsoluteUri, WebRequestCreator.ClientHttp);
其中requestUri是您的服务的Uri。希望这有帮助