2011-03-23 61 views
2

在Visual Studio 2010中使用.NET 4和Silverlight 4時,我試圖按照MSDN指南爲Silverlight客戶端(http://msdn.microsoft.com/en-us/library/cc645027(v=vs.96).aspx)構建雙工服務。我需要在web.config中修復以獲取此MSDN示例的工作方式?

Web.config中給出了警告:

警告26元 '綁定' 具有無效的子元素 '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 Test Client中加載服務。我在很多地方都找過答案。我看不出有什麼問題。

的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" /> 

回答

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> 
4

我也有這個問題。通過添加

C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\Server\System.ServiceModel.PollingDuplex.dll 

來解決WebRole項目的參考文獻。

相關問題