在Visual Studio 2010中使用.NET 4和Silverlight 4,我尝试按照MSDN指南为Silverlight客户端(http://msdn.microsoft.com/en-us/library/cc645027(v=vs.96).aspx)构建双工服务。
Web.config发出警告:
警告26元素'bindings'具有无效的子元素 'pollingDuplexHttpBinding'。预期的可能元素列表: 'basicHttpBinding,customBinding,msmqIntegrationBinding, netPeerTcpBinding,netMsmqBinding,netNamedPipeBinding,netTcpBinding, wsFederationHttpBinding,ws2007FederationHttpBinding,wsHttpBinding, ws2007HttpBinding,wsDualHttpBinding,netTcpContextBinding, wsHttpContextBinding,basicHttpContextBinding,mexHttpBinding, mexHttpsBinding,mexNamedPipeBinding,mexTcpBinding, 的WebHttpBinding”。 C:\ DuplexService \ DuplexService \ Web.config中
我无法将服务引用添加到客户端。我无法在WCF测试客户端中加载该服务。我在很多地方寻找过答案。我不明白这是什么问题。
web.config目前看起来像这样:
<!-- Register the binding extension from the SDK. -->
<extensions>
<bindingExtensions>
<add name=
"pollingDuplexHttpBinding"
type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement,System.ServiceModel.PollingDuplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</bindingExtensions>
</extensions>
<bindings>
<!-- Create the polling duplex binding. -->
<pollingDuplexHttpBinding>
<binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
duplexMode="MultipleMessagesPerPoll"
maxOutputDelay="00:00:07"/>
</pollingDuplexHttpBinding>
</bindings>
<services>
<service name="DuplexService.OrderService"
behaviorConfiguration="DuplexService.OrderServiceBehavior">
<!-- Service Endpoints -->
<endpoint
address=""
binding="pollingDuplexHttpBinding"
bindingConfiguration="multipleMessagesPerPollPollingDuplexHttpBinding"
contract="DuplexService.IDuplexService">
</endpoint>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
答案 0 :(得分:4)
我也遇到过这个问题。通过添加
解决了这个问题C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\Server\System.ServiceModel.PollingDuplex.dll
到WebRole项目的参考文献。
答案 1 :(得分:1)
使用此配置...它适用于我。
<system.serviceModel>
<extensions>
<bindingElementExtensions>
<add name="pollingDuplex"
type="System.ServiceModel.Configuration.PollingDuplexElement,
System.ServiceModel.PollingDuplex" />
</bindingElementExtensions>
</extensions>
<bindings>
<customBinding>
<binding name="pollingDuplexBinding">
<binaryMessageEncoding />
<pollingDuplex maxPendingSessions="2147483647"
maxPendingMessagesPerSession="2147483647"
/>
<httpTransport />
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="sb">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceThrottling maxConcurrentSessions="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="DataServices" behaviorConfiguration="sb" >
<endpoint address=""
binding="customBinding"
bindingConfiguration="pollingDuplexBinding"
contract="DataServices.IDataService"/>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>