2011-02-07 56 views
1

如何配置我的Silverlight應用程序和雙工WFC服務以使用HTTPS?目前,如果使用HTTP,evrything可以工作,但只要客戶端使用HTTPS訪問站點,服務中的回調創建就會失敗。我相信我需要修改我的配置文件,但我無法弄清楚它應該設置爲什麼。Silverlight 4 WCF雙工服務 - 如何爲HTTPS配置

這裏是我當前的配置:

<system.serviceModel> 

<extensions> 
    <bindingExtensions> 
    <add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement, 
     System.ServiceModel.PollingDuplex, 
     Version=4.0.0.0, 
     Culture=neutral, 
     PublicKeyToken=31bf3856ad364e35"/> 
    </bindingExtensions> 
</extensions> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 

     <serviceThrottling maxConcurrentSessions="2147483647" maxConcurrentInstances="2147483647" /> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

<bindings> 
    <pollingDuplex> 
    <binding name="myPollingDuplex" duplexMode="SingleMessagePerPoll" />   
    </pollingDuplex> 
</bindings> 

<services> 
    <service name="UnityEca.Web.Services.SearchPollingService"> 
    <endpoint address="" binding="pollingDuplex" bindingConfiguration="myPollingDuplex" contract="UnityEca.Web.Services.SearchPollingService" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 

從我的Silverlight應用程序,創建客戶端代理,像這樣:

SearchPollingServiceClient client = new SearchPollingProxy.SearchPollingServiceClient(
    new PollingDuplexHttpBinding { DuplexMode = PollingDuplexMode.SingleMessagePerPoll }, 
    new EndpointAddress("../Services/SearchPollingService.svc")); 

謝謝...

回答

0

有無你爲SSL實現了一個clientaccesspolicy文件?在這裏看到:http://timheuer.com/blog/archive/2008/10/14/calling-secure-services-with-silverlight-2-ssl-https.aspx

您可能還需要一個安全的元素添加到您的ServicesReferences.clientconfig文件:

<bindings> 
    <pollingDuplex> 
    <binding name="myPollingDuplex" duplexMode="SingleMessagePerPoll"> 
     <security mode="Transport" /> 
    </binding> 
    </pollingDuplex> 
</bindings> 

詳情請參閱this question

+0

xap和服務位於同一個域中,我希望在它們之間使用HTTPS。如果我想穿越protolols或域,那麼將使用clientaccesspolicy文件。在這種情況下,我認爲這不會有幫助。我錯了嗎? – Scott 2011-02-07 18:01:59