2010-09-20 54 views
6

我使用HTTPS運行了我的WCF服務,它顯示Infopage,但下面的URL「測試此服務,使用以下語法:」是:使用WCF時的WSDL超鏈接錯誤URL(https)

svcutil.exe https://servername.group.service.com/MyService.svc?wsdl(服務器的完整地址)

不是正確的URL https://my.service.com/MyService.svc?wsdl(分配hostheader)的,我怎麼能得到它顯示正確的URL(<URL of the Service> + ?wsdl)?

<services> 
    <service name="MyService" behaviorConfiguration="MyServer.MyServiceBehavior"> 
    <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBigStrings" contract="IMyService"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyService.MyServiceBehavior"> 
     <serviceCredentials> 
     <serviceCertificate findValue="my.service.com" x509FindType="FindBySubjectName"/> 
     </serviceCredentials> 
     <serviceMetadata httpsGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <basicHttpBinding> 
    <binding name="basicHttpBigStrings"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"/> 
     </security> 
     <readerQuotas maxStringContentLength="1048576" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

我已經嘗試過改變<serviceMetadata httpsGetEnabled="true"/><serviceMetadata httpsGetEnabled="true" httpsGetUrl="https://my.service.com/MyService.svc"/>,但它只是說:「一個註冊已經存在URI https://my.service.com/MyService.svc

+0

我有同樣的問題。你有沒有找到解決方案? – Turrau 2010-11-08 12:44:17

+0

不,到目前爲止,對不起... – Hinek 2010-11-09 12:57:17

+0

您是否在IIS中託管此服務?如果是這樣,那麼IIS將確定該URL,而不是WCF。 – 2010-11-12 20:33:51

回答

4

您指定在您設置主機頭,將固定WSDL。它是設置爲SSL還是隻是Http。請記住,IIS UI沒有字段來爲SSL設置主機頭。您需要使用管理腳本(IIS 6.0)或netsh.exe以用於更高版本的IIS。

+1

主機頭只設置爲Http,您是否有鏈接來設置SSL的主機頭? – Hinek 2010-11-29 16:00:38

+1

這是如何解決問題的方法? – 2012-02-27 18:52:45

+0

艾米特 - 謝謝你!經過幾個小時和幾個小時尋找解決方案,這就做到了。我們已經爲http和https刪除了主機頭,以適應我們的負載均衡器配置。將它們添加回來以解決問題。順便說一下,當試圖通過HTTPS請求WSDL時(對於遇到同樣問題的任何人),我們也看到一個空白頁面,其中有400個錯誤的請求錯誤。 – adamisnt 2012-05-11 15:06:10

0

您可以在下面的StackOverflow link一些這方面的背景 - 第一件事我會嘗試(他們提供了幾個不同的場景,稍微牽涉一點)將是在服務端點定義上設置Listen URI。當我在我的應用程序中正確獲取WSDL地址時遇到問題時,我可以設置它來糾正它。在那種情況下,我只是試圖修復這個方案(我們在BIGIP後面,它終止了SSL,因此該方案需要是https,儘管服務器端的WCF認爲它是獲得http)。

<endpoint address="https://www.sslloadbalancer.com" binding="someBinding" contract="IMyServiceInterface" listenUri="http://www.servicehost.com" ... /> 

我相信你

+0

該服務託管在IIS中,因此IIS確定URL,我無法在配置中手動設置端點地址。 – Turrau 2010-11-23 10:01:42

+0

我的例子是從IIS託管服務 - 你知道你在哪裏部署你的服務的IIS,爲什麼你不能在配置中設置端點地址? – HintonBR 2010-12-22 13:44:40