2009-07-15 68 views
3

有沒有人曾嘗試在WCF Web服務中使用SSL的自定義綁定?我已經看到了很多關於如何使用basicHttpBinding和wsHttpBinding來做到這一點的例子,但是對於customBinding而言,總是失敗。具體是什麼我目前正與(上最成功的配置還)工作看起來是這樣的:具有自定義綁定的SSL WCFs

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"> 
    </serviceHostingEnvironment> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceBehavior"> 
      <serviceMetadata httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <customBinding> 
     <binding name="binaryHttps"> 
      <binaryMessageEncoding /> 
      <httpsTransport /> 
     </binding> 
     </customBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="MyServiceBehavior" name="MyService"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="https://(myserver)/"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" 
     binding="customBinding" bindingConfiguration="binaryHttps" 
     contract="MyService" /> 
     <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 

這實際上使我們能夠從網絡訪問服務,得到它的WSDL,並添加在Visual Studio中的服務引用沒錯,但是當我們實際上嘗試並使用它在我們的Silverlight-3應用程序中時,它就會無限期地等待響應並永不超時。實際上,在我的機器上有一段時間(內存爲6GB)後,我給了我很少的內存問題。奇怪的是,所有這些在開發環境中(完全使用VS應用程序主機)都能很好地工作(並且仍然如此),直到我們試圖將它部署到具有真正SSL證書的實際服務器上時,所有這些問題彈出。

我已經搜索了相當詳盡的解決這個問題,但迄今沒有發現任何東西,並嘗試過幾乎所有 - 有沒有人在那裏遇到過這個,並得到它呢?

回答

1

所以事實證明,問題並不在於我們的web.config,它必須處理IIS 7和通配符SSL證書的問題。

即,將IP綁定到SSL連接和證書時,IIS 7不允許指定主機名。我猜這是因爲它期望一個非通配符SSL證書,它可以從中提取顯式主機名。我們最終需要做的是進入{WindowsDir} \ {System32} \ {Inetsrv} \ {config}中的applicationHost.config文件,並使用我們的Web服務的綁定IP地址找到條目並將其明確更改爲(ip ):(主機名)。它甚至可以在IIS配置GUI中正確顯示。

做完這些之後,我們完全關閉了所有服務器上除SSL通道以外的所有內容,並且所有內容都運行良好。

感謝上帝,結束了!

-1

AFAIK,使用SSL有性能問題。我們使用WCF behiovr進行身份驗證。我們使用的方式是Silverlight => ASP.NET => WCF。我們在Silverlight和WCF中配置了Endpoint behivor。每當我們調用服務時,我們都通過令牌進行身份驗證。

你是說你可以在Silverlight的ClientConfig中使用自定義綁定?

+0

嗯,我們在Silverlight 3庫中的代碼中進行綁定,而不是在ClientConfig文件中,但是,在本地計算機上一切正常。直到部署時纔出現問題。 – user138420 2009-07-15 03:30:04