2011-03-04 26 views
7

Bir WCF hizmetini barındıran bir SSL yapılandırılmış web sitemiz var. Hizmetin bağlaması crossDomainScriptAccessEnabled="true" vardır ve iletişim JSON kullanılarak serileştirilir.WCF hizmeti, SSL üzerinden JSONP ile

Bu hizmeti http'dan istediğimizde JSONP döndürür, ancak HTTPS kullanılarak istendiğinde, yalnızca JSON değerini döndürür. Her iki şekilde de JSONP'a ihtiyacım var, lütfen yardım edin.

Güncel konfigürasyon şu şekildedir:

Bu yapılandırmayı kullanmak ne olur
<webHttpBinding> 
     <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" /> 
</webHttpBinding> 

<behaviors> 
      <serviceBehaviors> 
       <behavior name="JsonServiceBehaviors"> 
        <serviceMetadata httpGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="true" /> 
       </behavior> 
      </serviceBehaviors> 
      <endpointBehaviors><behavior name="webHttpBehavior"> 
       <webHttp /> 
      </behavior></endpointBehaviors> 
</behaviors> 

<services> 
      <service name="Backend.CIService" behaviorConfiguration="JsonServiceBehaviors"> 
       <endpoint address="" binding="webHttpBinding" 
          bindingConfiguration="webHttpBindingWithJsonP" contract="Backend.ICIService" 
          behaviorConfiguration="webHttpBehavior"/> 
      </service></services> 

cevap

17

:

<webHttpBinding> 
    <binding name="jsonp" crossDomainScriptAccessEnabled="true" /> 
    <binding name="jsonpSsl" crossDomainScriptAccessEnabled="true"> 
    <security mode="Transport" /> 
    </binding> 
</webHttpBinding> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="JsonServiceBehaviors"> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="webHttpBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

<services> 
    <service name="Backend.CIService" behaviorConfiguration="JsonServiceBehaviors"> 
    <endpoint address="" binding="webHttpBinding" 
     bindingConfiguration="jsonp" contract="Backend.ICIService" 
     behaviorConfiguration="webHttpBehavior"/> 
    <endpoint address="" binding="webHttpBinding" 
     bindingConfiguration="jsonpSsl" contract="Backend.ICIService" 
     behaviorConfiguration="webHttpBehavior"/> 
    </service> 
</services> 

sorun üzerinde hizmet aramak istiyorsanız hem HTTP ve HTTPS sağlamak gerektiğidir İki son nokta - bir HTTP ve bir HTTPS için.

+0

Bu işe yaradı! Bir milyona teşekkürler! –

+0

Daha önce aynı anda http ve https almayı başaramadım, hatta çoklu uç noktalarda bile. Tam olarak yanlış yaptığımdan emin değilim, ama bu gördüğüm en az kafa karıştırıcı (ve en başarılı) cevaptır. Aslında anlamlıdır :) Sadece bu değil, çapraz alanlı komut dosyalarına ihtiyaç duyulmamı sağladı! Bravo! : D – Radderz

+0

WCF'ye yeni olanlar için öğesinin öğesinin içine girmesi gerekiyor. – JamesQMurphy