0

私はローカルホストで WCF サービスをホストしており、クライアントは同じホストで実行されています。同じマシンで両方を実行している場合はうまく機能しますが、クライアントを別のマシンにインストールしてサーバーに接続しようとすると失敗します...ここにサーバーの構成ファイルがあります

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <wsDualHttpBinding>
        <binding name="wsDualBinding">
          <security mode="None" />
        </binding>
      </wsDualHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Metadata">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="Metadata" name="ChatService.ChatManager">
        <endpoint address="duplex" binding="wsDualHttpBinding" bindingConfiguration="wsDualBinding"
          contract="ChatService.IChat" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:2525/chat/" />
            <!--<add baseAddress="net.tcp://localhost:1717/chat/" />-->
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>

クライアント構成

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <wsDualHttpBinding>
        <binding name="NewBinding0">
          <security mode="None" />
        </binding>
      </wsDualHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://192.168.1.10:2525/chat/duplex" binding="wsDualHttpBinding"
        bindingConfiguration="NewBinding0" contract="ChatService.IChat" name="mgr" />
    </client>
  </system.serviceModel>
</configuration>

それは私にそのエラーを与える

ソケット接続が中止されました。これは、メッセージの処理中にエラーが発生したか、リモート ホストが受信タイムアウトを超過したか、基になるネットワーク リソースの問題が原因である可能性があります。

4

1 に答える 1

0

wsDualHttpBindingコールバックを提供するために、サービスが接続できるアドレスをクライアントが確立する必要があります。これは、次のように、バインディング要素の構成ファイルで行われます。

<wsDualHttpBinding name="NewBinding0"
                   clientBaseAddress="http://machine_name:port/Client/">

クライアントはサービスとは別のマシン上にあるため、クライアントのマシン名を指定する必要があります。

このバインディングの詳細については、 WSDualHttpBinding クラスを参照してください。

于 2013-09-14T09:52:03.987 に答える