2012-12-28 40 views
15

基地址的用途是什麼...我的意思是基地址的含義是什麼?如果我省略基地址,那麼會出現什麼問題?WCF服務中基地址的用途是什麼

何時需要基地址?

根據下面的配置條目有兩個基地址...爲什麼需要兩個基地址。當人們提供更多的基地址?只是看到下面的2個基地址,並告訴我爲什麼人們給出兩個基地址爲什麼不是一個......是否有任何特定的原因?

<host> 
    <baseAddresses> 
    <add baseAddress="net.tcp://localhost:1645/ChatServer/"/> 
    <add baseAddress="http://localhost:1648/ChatServer/"/> 
    </baseAddresses> 
    </host> 
+1

對我來說,這看起來是一個很好的問題,這當然是我現在試圖找到答案的事情,而且這是一個有效問題,這一點可以從以下marc_s答案的質量中得到證明。 –

回答

25

基址(每一個「計劃」 - 例如,一個用於http,一個用於net.tcp等)可以定義你的地址的「基地」 - 如果你打算指定多個端點這是真的很有幫助。

一個基地址是從不需要 - 這是一個可選項,它可以幫助您簡化您的生活。

擁有一個基地址可以僅指定每個實際服務地址不同的「相對」部分。

想象一下,你想有三個服務端點 - 要麼你可以單獨定義所有的,完全在一個配置是這樣的:

<service name="Test1"> 
    <endpoint name="endpoint1" 
     address="http://yourserver/yourservices/test1/service1" ..... /> 
    <endpoint name="endpoint2" 
     address="http://yourserver/yourservices/test1/service2" ..... /> 
    <endpoint name="endpoint3" 
     address="http://yourserver/yourservices/test1/service3" ..... /> 
</service> 

,或者您可以通過指定基本定義公用部分地址,然後有更容易閱讀「相對」地址:

<service name="Test1"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://yourserver/yourservices/test1/"/> 
     </baseAddresses> 
    </host> 
    <endpoint name="endpoint1" 
     address="service1" ..... /> 
    <endpoint name="endpoint2" 
     address="service2" ..... /> 
    <endpoint name="endpoint3" 
     address="service3" ..... /> 
</service> 

因此,使用基址可以更容易地指定多個端點 - 它可以爲您節省一些打字。

另請注意,基址只有在您的WCF服務爲自託管時纔有用。如果您使用IIS來託管您的WCF服務,那麼*.svc文件的位置確實指示該服務的「基地址」,例如,在這種情況下有一個基地址並沒有真正的區別/完全沒有幫助。

+0

如果你可以請看看我的問題:https://stackoverflow.com/questions/44277334/wcf-multiple-endpoints – FrenkyB