2011-02-07 58 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