2016-08-12 20 views
0

我忙於試圖弄清楚如何在我的WCF服務中的一個端點上啓用安全性。是一個帶有安全端點和非安全雙HttpBinding端點的wcf服務嗎?

我想弄清楚是否有可能有1個wcf服務,其中有多個端點具有不同的安全配置。

Endresult應符合以下端點服務:

  • 的wsHttpBinding(非安全)
  • 的wsHttpBinding(擔保)
  • wsDualHttpBinding(非安全)

我想知道如果這是可能的,因爲:

  • 其中之一現在已被「安全」,因此我需要我的baseAddress移動到https。
  • 的WCF的書,我有說,HTTPS/SSL是不可能的wsDualHttpBinding

我需要開始主持不同的服務我wsDualHttpBinding?

回答

0

您可以將多個端點添加到一個服務,而每個端點負責其配置(包括安全性)。

設置主機:從App.config中獲得

ServiceHost host=new ServiceHost(typeof(CalcService)); 
host.AddServiceEndpoint(typeof (ICalc), new NetNamedPipeBinding("internalBinding"), 
      "net.pipe://127.0.0.1:5000/CalcService"); 
host.AddServiceEndpoint(typeof(ICalc), new BasicHttpBinding("secureBinding"), 
      "http://127.0.0.1:5001/CalcService"); 

這裏的配置,它可以像這樣

<bindings> 

    <basicHttpBinding> 
    <binding name="secureBinding" openTimeout="00:01:00" closeTimeout="00:01:00" sendTimeout="00:30:00" receiveTimeout="00:30:00" 
      maxBufferSize="2147483647" 
      maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      transferMode="Streamed"> 
     <readerQuotas maxDepth="2147483647" 
       maxStringContentLength="2147483647" 
       maxArrayLength="2147483647" 
       maxBytesPerRead="2147483647" 
       maxNameTableCharCount="2147483647" /> 
     <security mode="Transport"/> 
    </binding> 
    </basicHttpBinding> 
    <netNamedPipeBinding> 
    <binding name="internalBinding" openTimeout="00:01:00" closeTimeout="00:01:00" sendTimeout="00:30:00" receiveTimeout="00:30:00"> 
     <security mode="None"/> 
    </binding> 
    </netNamedPipeBinding> 
</bindings> 
+0

嗨弗拉基米爾,我的問題圍繞的事實,我必須設置baseaddress爲http或https,我有一個端點與wsDualHttpbinding(似乎不支持https)和端點(安全性似乎需要https)的組合。當我將它配置爲https時,運行主機時出現以下錯誤:「無法找到與具有綁定WSDualHttpBinding的端點匹配方案http的基址,註冊的基址地址方案爲[https]。」 –