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

いずれにせよ、何かがエンドポイントアドレス(つまりip / port)を提供する必要があります。その値が頻繁に変更されるように設定されている場合は、クライアントとサービスの間にポートフォワーダーを設定します。

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

于 2012-11-30T14:40:55.007 に答える
0

これは「うまくいく」はずのシナリオだと思います。図のように、サービス構成のサービスベースアドレスはローカルホストを使用できる必要があります。クライアント側の構成では、サービスが実行されているホストの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"

于 2012-11-30T14:47:19.977 に答える
0

私はあなたが静的IPアドレスを持っていないことを理解し、静的DNS名を持ってこれを克服しようとしましたが、私の意見では、静的IPアドレスを持っていて、それに静的DNS名を割り当てる必要があるため、これは機能しません。接続してみてください。

于 2012-11-30T14:54:01.983 に答える