2010-04-08 61 views
0

當我安裝一個Web服務器上的WCF服務,我設置終點地址WCF主機地址的問題

<endpoint address="http://www.mydomin.com/clientname/happy.svc" 
       binding="basicHttpBinding" 
       name="happysvcbasic" 
       contract="happysvc.Ihappysvc"> 

</endpoint> 

但是當在瀏覽器上面的地址類型,我得到一個不同的主機名,這是內部服務器名稱,如

要測試此服務,您需要創建一個客戶端並使用它來調用該服務。爲此,您可以使用svcutil.exe的工具,從語法如下命令行:

svcutil.exe的http://internalservername.domain/clientname/happy.svc?wsdl

我嘗試添加主機/ baseaddress標記,但沒有什麼區別,有什麼我錯過了嗎?感謝幫助。

+0

你的問題是什麼? – Pyrolistical 2010-04-08 21:25:24

回答

0

當您通過IIS託管您在IIS中的服務時,地址始終是相對的。假設你想實現你的端點的東西刪除HTTP://

<endpoint address="clientname" 

然後你的終點將是 http://localhost/virtualdirectory/happy.svc/clientname

這種情況的使用是當你暴露多個端點,每個端點有擁有一個唯一的地址。

SeeThis瞭解更多信息。

如果您正在嘗試爲您的服務設置不同的DNS地址,則需要更改託管網站的方式並使用host headers

+0

你是對的。我在iis/binding中設置主機頭,一切都很好。謝謝 – Fred 2010-04-09 13:42:09

0

當你在IIS中託管你的WCF服務時,你不會選擇地址,所以在你的<endpoint>中設置address=是完全沒有用的,就像設置基地址一樣。

當IIS託管,決定你的WCF服務地址的唯一的東西是:

  • IIS服務器的機器名/ IP地址,以及可能的端口號
  • 虛擬目錄,並可能任何子目錄在您happy.svc文件位於
  • 您的名稱* .svc文件本身,包括.svc擴展

所以WCF服務地址會是這樣的:

http://yourserver:80/VirtualDirectory/SubDirectory/happy.svc 

這就是全部了,你不能改變的(至少不是現在,在WCF 3.5 - 它可能在WCF .NET 4的不同)。

所以現在:你的問題是什麼,真的嗎?