嘿,我已经制作了WCF服务,并希望能够使用我设置的dns连接到它? 因为现在我必须通过计算机ip同步到baseaddress。 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更改了客户端也不必进行更改以连接到我
谢谢你的回答!
答案 0 :(得分:0)
无论如何,都必须提供端点地址(即ip / port)。如果该值设置为频繁更改,我将在您的客户端和服务之间设置端口转发器。
答案 1 :(得分:0)
我认为这是一个应该“正常工作”的情景。如图所示,服务配置中的服务基地址应该能够使用localhost。在客户端配置中,您应该使用运行服务的主机的DNS名称配置端点地址。
检查客户端计算机是否可以使用DNS名称ping服务计算机。如果解决没问题,则没有理由不让WCF连接。只要客户端仍然可以将DNS名称解析为新的IP地址,您就不必在DHCP服务器决定分配新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"
。
答案 2 :(得分:0)
据我了解你没有静态IP地址并尝试通过拥有一个静态DNS名称来克服这个问题,在我看来这不会起作用,因为你应该有一个静态IP地址而不是为它分配一个静态DNS名称,然后尝试连接。