2012-11-21 14 views
5

https bağlamayı etkinleştirdim, ancak WSDL'm http: soap adresi var. Herhangi bir fikir neden? Teşekkürler!WSDL'm neden hala http?

<wsdl:service name="XXXX"><wsdl:port name="BasicHttpBinding_XXXXService" binding="i0:BasicHttpBinding_XXXService"> 
    <soap:address location="http://dev-soa-app/XXXX/XXXX/XXXService.svc"/></wsdl:port> 
</wsdl:service> 

İşte benim web.config dosyasıdır: Herşeyden

<?xml version="1.0"?> 
<configuration> 

    <system.web> 
    <customErrors mode="Off"/> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <configProtectedData> 
    <providers> 
     <add name="ConnStrings" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" keyContainerName="ConnStrings" cspProviderName="" useMachineContainer="true" useOAEP="false"/> 
    </providers> 
    </configProtectedData> 
    <connectionStrings configSource="ConnStrings\ConnStrings.config"/> 
    <system.serviceModel> 
    <services> 
     <service name="XXXXService"> 
     <!-- Use a bindingNamespace to eliminate tempuri.org --> 
     <endpoint address="" name="XXXXService" 
        binding ="wsHttpBinding" bindingConfiguration="TransportSecurity" 
        bindingNamespace="WF.CT2.WebServices.XXXXService" 
        contract="WF.CT2.WebServices.XXXXService.SAMLService" /> 
     <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="TransportSecurity"> 
      <security mode="Transport"> 
      <transport clientCredentialType="None"/> 
      </security> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpsGetEnabled="true" httpGetEnabled ="false" /> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

</configuration> 

cevap

7

Öncelikle, WSDL service eleman URL yalnızca bir ipucu olduğunu fark etmelidir. Müşterileriniz, bu hizmetin doğru adresi olarak buna bağlı olmamalıdır.

İkincisi, hizmetiniz IIS'de barındırılıyorsa, IIS'deki bağlanmalarınıza dayanarak o öğeye yerleştirilecek adresi belirleyen IIS olduğunu anlayın. Hizmeti barındıran sitede hem HTTP hem de HTTPS etkin olduğundan şüpheleniyorum. Bunu, IIS Yöneticisi'ndeki SSL sayfasında "SSL iste" özelliğini ayarlayarak genellikle HTTPS'ye geçirebilirsiniz.

+0

Teşekkürler John! Tam olarak aradığım cevap. – WinFXGuy

0

Web.Config öğesinden httpGetEnabled = "false" öğesini kaldırın ve httpsGetEnabled = "true" ifadesini olduğu gibi bırakın (aşağıya bakın).

<serviceBehaviors> 
    <behavior> 
    <serviceMetadata httpsGetEnabled="true" /> 
    <serviceDebug includeExceptionDetailInFaults="false"/> 
</behavior> 
İlgili konular