2012-11-30 92 views
0

嘿,我已經做了一個WCF服務,並希望能夠連接到它與我設置的DNS?因爲它現在我必須通過計算機ip向baseaddress conncet。 和DHCP有時會給新的IP,然後客戶端必須知道新的IP等等......你希望得到它:)用名稱而不是IP連接到WCF服務

所以我怎麼能通過名稱來連接它呢?而像baseaddress已本地主機

<?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更改客戶端不必更改連接到我

謝謝你的答案!

+0

你是如何託管WCF的? IIS? – alan

+0

@alan它是自主託管的 – Dendei

回答

0

無論如何,東西將不得不提供端點地址(即IP /端口)。如果該值設置爲頻繁更改,我會在您的客戶端和服務之間設置一個端口轉發器。

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

+0

yes對我有用的是在.net 4.0中添加的選項所以我可以保持localhost,並且從任何地方連接,如果我有端口forwared。 – Dendei

0

我覺得這是應該「只是工作」的場景。您在服務配置中的服務基地址應該能夠像您所說明的那樣使用本地主機。在您的客戶端配置中,您應該使用運行服務的主機的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="http://localhost:8732/End",你只需要address="End"

+0

嗯好吧謝謝,但是正確的方式嘗試連接像這樣「http:// dendei:8732/VenatoWCFconsole /」 – Dendei

+0

同意,您可能需要檢查您嘗試連接通過DNS也指定正確端口號 – RoughPlace

+0

@Dendei查看更新。 – Martin

0

據我所知,你沒有一個靜態IP地址,並試圖克服這一點,有一個靜態DNS名稱,在我看來這不會工作,因爲你應該有一個靜態IP地址,並分配給它一個靜態DNS名稱,然後嘗試連接。

+0

是的我不想要使用IP當我連接但我如何設置? :) – Dendei

+0

這東西不是設置的東西,你應該從你的ISP購買一個靜態IP地址。然後爲該靜態IP設置一個DNS並使用它。 – Mircea

相關問題