2011-12-07 83 views
1

我也在學習WCF,並且對於Web服務是新手,並且有一個非常基本的問題。請放縱我!我正在使用的書(學習WCF)中的例子創建了一個ServiceHost實例,指定了服務的基地址(新Uri(「http:// localhost:8000/HelloIndigo)),我猜這是該類的位置庫實現服務,然後調用AddServiceEndpoint()完成最後一個參數,相對地址,作爲「HelloIndigoService」。後者只不過是類的名稱(在庫中找到)實際上是執行服務合同?(這個班上有這個名字嗎?)然而,這個說法被稱爲「地址」,這使得我非常困惑。請幫忙。當已經提供基地址時,WCF服務端點的相對地址

回答

3

如果你是自託管的,你可以有:

  • complete,explicit端點地址在您的端點中,例如,

    http://yourServer:8888/YourService/SomeMethodName 
    

    所以您的端點定義了一個完整的HTTP地址

OR:

  • 您可以在這對於所有端點的庫中的服務定義基址服務,然後端點本身只定義從那裏的相對地址。

所以在你的情況下,基地址是http://localhost:8000/HelloIndigo - 因此所有的服務端點將在該地址「下」。

終點定義相對地址的HelloIndigoService,所以這兩個放在一起,並在最後的詳細地址是:

http://localhost:8000/HelloIndigo/HelloIndigoService 

這適用於自託管只(當你有一個主機應用程序,它創建ServiceHost類並將其打開以供使用)。

當您使用IIS來承載您的服務時,則不使用基地址/不解釋 - 相反,您的*.svc文件所在的虛擬目錄(在IIS中)定義了您的服務端點的地址。

+0

謝謝你的回答,Marc。我想你已經部分回答了我問的問題。這聽起來像你的答案是「是」。在本書的例子中,我們是自我託管的。包含該服務的類庫是HelloIndigo.dll,並且它包含一個名爲HelloIndigoService的單個類HelloIndigo()。所以我想,當它將完整的地址放在一起時,與上面列出的一樣,它不需要深入研究類文件,因爲該類只包含一個方法?追加「/ HelloIndigo」來指定方法名稱是否有效? – user1013210