2011-11-17 124 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

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