首页 新闻 会员 周边

WPF+WCF+Silverlight5(宿主)报错

0
悬赏园豆:5 [已解决问题] 解决于 2014-06-26 16:25

绑定“PollingDuplexHttpBinding”不支持创建任何通道类型。这通常表示 CustomBinding 中的 BindingElement 堆栈不正确或者顺序错误。Transport 必须位于堆栈的底部。建议 BindingElement 的顺序是: TransactionFlow、ReliableSession、Security、CompositeDuplex、OneWay、StreamSecurity、MessageEncoding、Transport。

 

sl5为服务端,

WPF为客户端配置文件信息:

<configuration>
  <system.serviceModel>
    <client>
      <endpoint address="http://localhost:8328/Service.svc" binding="pollingDuplexHttpBinding"
        bindingConfiguration="PollingDuplexHttpBinding_IService" contract="TService.IService"
        name="PollingDuplexHttpBinding_IService" />
    </client>
    <extensions>
      <bindingExtensions>
        <add name="pollingDuplexHttpBinding" type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement,System.ServiceModel.PollingDuplex, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </bindingExtensions>
    </extensions>
    <bindings>
      <pollingDuplexHttpBinding>
        <binding name="PollingDuplexHttpBinding_IService" duplexMode="MultipleMessagesPerPoll"  />       
      </pollingDuplexHttpBinding>
    </bindings>    
  </system.serviceModel>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

攀 登的主页 攀 登 | 初学一级 | 园豆:191
提问于:2014-06-26 12:15
< >
分享
最佳答案
0
收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2014-06-26 13:06

SL客户端可以访问到SL的服务端,但WPF的客户端却访问不到,出现上面的报错信息。(项目都是在一个解决方案下)

攀 登 | 园豆:191 (初学一级) | 2014-06-26 14:41

@攀 登: PollingDuplexHttpBinding 是 Silverlight 特有的,不支持 WPF。

Launcher | 园豆:45045 (高人七级) | 2014-06-26 14:46

@Launcher: 不是吧,不是说WPF支持所有的Bangding吗?

攀 登 | 园豆:191 (初学一级) | 2014-06-26 14:50

@攀 登: 在 4 包括 4 之前都不支持 WPF,之后支不支持,我不知道。看你的测试结果是还是不支持。你可以看下 PollingDuplexHttpBinding 的源码就知道了。

Launcher | 园豆:45045 (高人七级) | 2014-06-26 15:00

@Launcher: 这我还真没注意,这么说就只能改成wsDualHttpBinding的了。

攀 登 | 园豆:191 (初学一级) | 2014-06-26 15:01

@攀 登: silverlight 不支持 wsDualHttpBinding,你可以分析下 PollingDuplexHttpBinding,把它移植到 WPF 中去。

Launcher | 园豆:45045 (高人七级) | 2014-06-26 15:05

@Launcher: 什么意思,没太明白,能不能说的详细些?我是初学者,还不太懂移植

攀 登 | 园豆:191 (初学一级) | 2014-06-26 15:08

@攀 登:  silverlight 不支持 wsDualHttpBinding 这个明白吗?

Launcher | 园豆:45045 (高人七级) | 2014-06-26 15:14

@Launcher: 这个知道,我的意思是移植这个不太懂

攀 登 | 园豆:191 (初学一级) | 2014-06-26 15:18

@攀 登: WCF 是个很灵活的框架,其中的很多组件都是可以自定义的,通过对 PollingDuplexHttpBinding 源码的分析,你可以通过自定义的方式来实现同 PollingDuplexHttpBinding 相同的功能。

Launcher | 园豆:45045 (高人七级) | 2014-06-26 15:24

@Launcher: 太高端了,怕没有那么多的时间

攀 登 | 园豆:191 (初学一级) | 2014-06-26 15:26

@攀 登: 你跟我说这个有啥用?你咋连问题都不会问呢?我还得在这里帮你想下一个问题该如何问。要是换着我,我会接着问:除了使用自定义的方式,还有别的方式来解决我的问题吗?

然后我就会告诉你:有,但是是一个变通的方式,需要你修改你的服务定义,以及在 WPF 终端中多一些调用逻辑。

 http://msdn.microsoft.com/zh-cn/library/ms751515(v=vs.110).aspx

为你的 SilverLight WCF 服务添加两个终结点,一个采用 PollingDuplexHttpBinding ,由 Silverlight 单独使用;一个采用 BasicHttpBinding,由 WPF 或其它类型终端使用。

WPF 调用时,通过定时器机制,在客户端轮询服务的方法,达到 Pooling 的目的。

Launcher | 园豆:45045 (高人七级) | 2014-06-26 15:36

@Launcher: 谢谢,今天真的是遇到好人了,感谢你的指教,真的很感谢!

攀 登 | 园豆:191 (初学一级) | 2014-06-26 15:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册