2011-11-17 70 views
4

我有通過下面的配置文件中定義的兩個端點一個WCF服務:WCF數據流上的服務與Windows身份驗證端點

<system.serviceModel> 
     <services> 
      <service name="SyncService" behaviorConfiguration="SyncServiceBehavior"> 
      <endpoint name="Data" address="Data" binding="basicHttpBinding" bindingConfiguration="windowsAuthentication" contract="ISyncService"/> 
      <endpoint name="File" address="File" binding="basicHttpBinding" bindingConfiguration="httpLargeMessageStream" contract="ISyncService"/> 
      <endpoint address="mex" binding="webHttpBinding" bindingConfiguration="windowsAuthentication" contract="IMetadataExchange"/> 
      </service> 
     </services> 
     <bindings> 
      <basicHttpBinding> 
      <binding name="httpLargeMessageStream" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Streamed" messageEncoding="Mtom" /> 
      <binding name="windowsAuthentication" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
       <security mode="TransportCredentialOnly"> 
       <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""></transport> 
       <message algorithmSuite="Default" clientCredentialType="UserName"/> 
       </security> 
      </binding> 
      </basicHttpBinding> 
      <webHttpBinding> 
      <binding name="windowsAuthentication"> 
       <security mode="TransportCredentialOnly"> 
       <transport clientCredentialType="Windows"></transport> 
       </security> 
      </binding> 
      </webHttpBinding> 
     </bindings> 
     <behaviors> 
      <serviceBehaviors> 
      <behavior name="SyncServiceBehavior"> 
       <serviceMetadata httpGetEnabled="true"/> 
       <serviceDebug includeExceptionDetailInFaults="true"/> 
       <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
      </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"></serviceHostingEnvironment> 
     </system.serviceModel> 

我想使用Windows身份驗證的數據端點,但最近發現,你無法使用Windows身份驗證通過HTTP進行流式傳輸。我刪除了文件的端點安全元素,但仍然得到了以下錯誤:

HTTP request streaming cannot be used in conjunction with HTTP authentication. Either disable request streaming or specify anonymous HTTP authentication. Parameter name: bindingElement

是否有可能對同一服務的兩個端點使用不同的身份驗證方法也是這樣嗎?爲什麼我無法使用Windows身份驗證進行流式傳輸?

我也試了一下在這個線程建議,但無濟於事:

Which authentication mode of basichhtpbinding can be used to secure a WCF Service using Streaming?

回答

0

不幸的是,這是不支持的。