0

嘿,我已经创建了 WCF 服务,并希望能够使用我设置的 dns 连接到它?因为现在我必须通过计算机 ip 连接到基地址。并且 DHCP 有时会提供新的 ip,然后客户端必须知道新的 ip 等等......你希望得到它:)

那么我怎样才能让它通过名称连接呢?并且喜欢在基地址中有本地主机

<?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 更改了客户端也不必进行更改即可连接到我

谢谢你的回答!

4

3 回答 3

0

我认为这是一个应该“正常工作”的场景。您在服务配置中的服务基地址应该能够使用 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="http://localhost:8732/End"您只需要address="End".

于 2012-11-30T14:47:19.977 回答
0

据我了解,您没有静态 IP 地址并尝试通过使用静态 DNS 名称来克服这个问题,在我看来,这是行不通的,因为您应该有一个静态 IP 地址,而不是为其分配一个静态 DNS 名称,然后尝试连接。

于 2012-11-30T14:54:01.983 回答
0

无论如何,都必须提供端点地址(即 ip/port)。如果该值设置为经常更改,我会在您的客户端和服务之间设置一个端口转发器。

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

于 2012-11-30T14:40:55.007 回答