2011-04-27 39 views
7

我正在IIS6中運行一個C#web服務,並試圖通過SSL使它工作。當做一個tcpdump時,它顯示最初的呼叫爲https,但通過http進行其他呼叫。我的SSL證書是自簽名的,在我的網頁瀏覽器中https正常工作。我爲客戶端使用PHP SoapClient。如何讓WCF服務通過SSL運行?

有誰知道這會導致什麼?

在wsdl中,地址位置設置爲http。這應該是https嗎?我該如何改變它?

<wsdl:service name="Service"> 
<wsdl:port name="BasicHttpBinding_Service" binding="i0:BasicHttpBinding_Service"> 
<soap:address location="http://example.com/Service.svc"/> 
</wsdl:port> 
</wsdl:service> 
+0

WCF服務或ASMX服務? – 2011-04-27 23:36:21

+0

這是一個WCF服務 – Eggo 2011-04-28 00:15:31

+0

差別很大。將來你應該說哪個。 「.NET C#Web服務」不明確。 – 2011-04-28 00:51:37

回答

10

您必須配置服務使用HTTPS:

<bindings> 
    <basicHttpBinding> 
    <binding name="https"> 
     <security mode="Transport" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="metadata"> 
     <serviceMetadata httpsGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="..." behaviorConfiguration="metadata"> 
    <endpoint address="..." contract="..." binding="basicHttpBinding" 
       bindingConfiguration="https" /> 
    </service> 
</services> 

這將只允許通過HTTPS調用你的服務,因爲沒有暴露任何不安全的端點。 WSDL也只能通過HTTPS訪問,因爲HTTP GET未啓用。

+1

沒有人回覆OP的另一個問題:在wsdl中,地址位置設置爲http。這應該是https嗎?我該如何改變它?請讓我知道,如果上述更改配置文件也更改地址位置爲https?是否需要某些東西? – WinFXGuy 2012-11-23 17:06:15

+0

@WinFXGuy:WSDL中的地址位置也應該是HTTPS。如果它不是你有一些額外的配置問題。 – 2012-11-23 18:00:17

+0

我錯過了什麼?請參考我的問題:http://stackoverflow.com/questions/13502185/why-my-wsdl-still-shows-basic-http-binding-with-the-location-value-of-http – WinFXGuy 2012-11-23 18:25:48