2012-11-30 37 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

相关问题