2013-04-08 15 views
0

我在Azure上通過SSL運行Cloud Service;我可以瀏覽到該服務,並得到其wsdl通過SSL但是當我做了soap address location返回錯誤 - 而不是使用綁定到該證書我得到的服務器名稱通過SSL的Azure Web Service返回不正確的soap地址位置

<肥皂域名:地址位置=」 HTTP:// rd00155d45cc3c/Amazon.svc 「/>

我期待看到

<肥皂:地址位置=」 https://azure.mydomain.com/Amazon.svc」 />

我的配置

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding>     
      <binding name="AzureBinding"> 
       <security mode="Transport" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="MyService"> 
      <endpoint address="" binding="basicHttpBinding" 
         contract="StudentServiceWCF.IAmazon" 
         bindingConfiguration="AzureBinding" /> 
      <endpoint address="mex" binding="mexHttpsBinding" 
         contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true"/> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

我的app.config客戶端點配置

<endpoint address="https://azure.mydomain.com/Amazon.svc" 
      binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_IOutOfDateSecure" 
      contract="AzureService.IAmazon" name="BasicHttpBinding_IAmazon" /> 

<binding name="BasicHttpBinding_IAmazon"> 
    <security mode="Transport" /> 
</binding> 

我不知道如何影響地址的位置,以便使用域名從我的證書。因爲它返回HTTP位置測試客戶端拋出一個異常:

位於http HTTP服務:// rd00155d45cc3c/Amazon.svc不可用

+0

已安裝[此修復程序(http://archive.msdn.microsoft.com/KB971842),還做您使用[UseRequestHeadersForMetadataAddress](http://zamd.net/2010/01/ 14/using-request-headers-for-metadata-address /)? – astaykov 2013-04-08 10:44:17

+0

我在哪裏可以在我的本地開發框中安裝該修補程序?有關於此的消息>請注意,此修補程序並未經過完整的Microsoft產品迴歸測試,也未經過與其他修補程序的組合測試。 – 2013-04-08 11:06:13

回答

1

useRequestHeadersForMetadataAddress由@astaykov建議得到了我一些方法來解決但爲了能夠通過https得到wsdl我需要

<protocolMapping> 
    <add scheme="https" 
     binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_IService1" /> 
</protocolMapping> 

添加到system.serviceModel節我的配置和這給了我在我生成的來自Azure的wsdl的soap:address location元素中的正確結果。

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="AzureBinding"> 
       <security mode="Transport"> 
        <transport clientCredentialType="None" /> 
       </security> 
      </binding>     
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="MyService"> 
      <endpoint address="" binding="basicHttpBinding" 
         contract="StudentServiceWCF.IAmazon" 
         bindingConfiguration="AzureBinding" /> 
      <endpoint address="mex" binding="mexHttpsBinding" 
         contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true"/> 
       <useRequestHeadersForMetadataAddress> 
        <defaultPorts> 
         <add scheme="https" port="443" /> 
        </defaultPorts> 
       </useRequestHeadersForMetadataAddress> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <protocolMapping> 
     <add scheme="https" binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_IService1" /> 
    </protocolMapping> 
</system.serviceModel> 
+0

謝謝;不知道爲什麼更多的人沒有這個問題; 28/08/13仍未修復此修復程序。 – f0x 2013-08-28 20:43:09

1

因此,在評論有點老氣,但請檢查this article

step 6描述要添加什麼行爲(UseRequestHeadersForMeatadataAddress)以及何時引入:KB981002- WCF:修補程序彙總升級。這將解決你的問題。

而KB981001是Windows的官方修補程序/更新。它必須安裝在您的開發機器和部署服務的Windows Azure實例上。但是,如果您沒有明確定位舊的Guest OS (specific osVersion),則必須已安裝該修補程序。

+0

添加'UseRequestHeadersForMetaDataAddress',並且**既啓用了http和https計劃,也獲得域名,但只有**代表http。當我刪除http的方案時,爲了強制SSL,只有服務器名稱被再次使用,而不是我的域名。 – 2013-04-08 11:35:43

相關問題