簡體   English   中英

使用名稱而不是IP連接到WCF服務

[英]Connect to WCF service with name instead of IP

嘿,我已經提供了WCF服務,並希望能夠使用我設置的dns連接到它? 現在,我必須通過計算機ip連接到基址。 DHCP有時會提供新的IP,然后客戶端必須知道新的IP,以此類推...您希望得到它:)

所以我如何使其通過名稱連接呢? 就像在baseaddress中有localhost

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="metaAndErrors" 
               name="VenatoWCF.WCFService">
        <endpoint address="http://localhost:8732/End"
                  binding="basicHttpBinding"
                  contract="VenatoWCF.IService">
          <identity>
            <dns value="dendei"/>
          </identity>
        </endpoint>
        <endpoint address="http://localhost:8732/mex" 
                  binding="mexHttpBinding" 
                  contract="IMetadataExchange">
          <identity>
            <dns value="dendei"/>
          </identity>
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/VenatoWCFconsole/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metaAndErrors">
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

一直在嘗試這樣的事情,但沒有運氣xD,我想從客戶端連接“ http:// dendei:8732 / VenatoWCFconsole /”

因此,即使我的IP發生變化,客戶端也無需進行更改即可連接到我

謝謝你的回答!

無論如何,都將必須提供端點地址(即ip / port)。 如果該值設置為經常更改,我將在您的客戶端和服務之間設置一個端口轉發器。

http://en.wikipedia.org/wiki/Port_forwarding

我認為這是一個應該“起作用”的方案。 如圖所示,服務配置中的服務基址應該可以使用localhost。 在客戶端配置中,應該使用運行服務的主機的DNS名稱配置端點地址。

檢查客戶端計算機是否可以使用DNS名稱ping服務計算機。 如果可以解決問題,則沒有理由不應該連接WCF。 DHCP服務器決定分配新的IP地址時,您不必更改任何配置,只要客戶端仍可以將DNS名稱解析為新的IP地址即可。

例如,在您的客戶端配置中...

<client>
  <endpoint address="http://dendei:8732/VenatoWCFconsole/End"
    binding="basicHttpBinding" bindingConfiguration="sameBindingConfigYouAlreadyUse"
    contract="Whatever.YourContractNameIs" name="YourEndpointName" />
</client>

更新:我剛剛發現上面的服務配置中存在問題。 在服務端點配置中,應將地址指定為URI的附加部分,該附加部分將附加到基本地址上。 因此,只需使用address="End"而不是address="http://localhost:8732/End" address="End"

據我了解,您沒有靜態IP地址,並嘗試通過使用靜態DNS名稱來解決此問題,在我看來,這將不起作用,因為您應該擁有靜態IP地址,而不是為其分配靜態DNS名稱,然后嘗試連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM