0

コンソール プロセスでホストされている wcf サービスがあります。サービス エンドポイントの作成は、net tcp バインディングを使用する program.cs ファイル内のコードによって行われます。

チャネルのクライアント側の作成は、コードを介して行われます。

このセットアップは、ローカル ホストで正常に機能します。しかし、他のマシンでサービスをホストし、他のマシンからサービスに接続しようとすると (クライアント IP アドレスが更新されます)、以下のエラーが発生します。

System.ServiceModel.EndpointNotFoundException: net.tcp://10.10.1.1:8232/Service/ に接続できませんでした。接続の試行は、00:00:00 の期間継続しました。TCP エラー コード 10061: ターゲット マシンがアクティブに拒否したため、接続できませんでした 10.10.1.1:8232。---> System.Net.Sockets.SocketException: ターゲット マシンがアクティブに拒否したため、接続できませんでした 10.10.1.1:8232

注: その他のシナリオ => サービスとクライアントが同じマシンで実行されています。

サービス エンドポイント URL アドレスを追加するサービス ホストでは、127.0.0.1 として指定されました。

これをクライアント側で使用し、同じマシンの IP アドレスを指定すると、サービスに接続できませんでした。

しかし、サービス エンドポイント構成で 127.0.0.1 の代わりにlocalhostを指定すると、サービスに正常に接続できます。

127.0.0.1 では動作しない理由はわかりませんが、同じマシンのローカル ホストでは動作します。これは期待されていますか?

ローカル ホストを変更した後でも、他のマシンに存在するサービスに接続できませんでした。

どんな提案でも大歓迎です。

ポートはファイアウォールによってブロックされていません。

** コードによるサーバー側の設定 **,

var tcpBinding = new NetTcpBinding(SecurityMode.None)
        {
            MaxBufferPoolSize = int.MaxValue,
            MaxBufferSize = int.MaxValue,
            MaxReceivedMessageSize = int.MaxValue,
            ReaderQuotas =
            {
                MaxArrayLength = int.MaxValue,
                MaxNameTableCharCount = int.MaxValue,
                MaxStringContentLength = int.MaxValue,
                MaxDepth = int.MaxValue,
                MaxBytesPerRead = int.MaxValue
            },
            ReceiveTimeout = TimeSpan.MaxValue
        };

var host = new ServiceHost(typeof(Service));

        host.AddServiceEndpoint(typeof(IService), tcpBinding, "net.tcp://localhost:8232/Service/");


        host.Open();

        Console.ReadLine();

        host.Close(); `

** クリネ側の構成 **

    string endPointAdress = "net.tcp://10.10.1.1:8232/Service";       

var ServiceProxy = ChannelFactory.CreateChannel( tcpBinding, 新しい EndpointAddress(endPointAdress));

*/ tcp バインディングは、クライアントとサービスの両方で同じです。

この問題は、データ コントラクトが原因で発生する可能性がありますか? しかし、そうであれば、ローカルホストでも機能しないはずです。私の理解が間違っている場合は、修正してください。

解決

からのサーバー構成の変更

** net.tcp://127.0.0.1:8232/Service/ ** を ** net.tcp://localhost:8232/Service/ ** に変更すると問題が解決するようです。そして、言及された解決策は、誰かにとって役立つかもしれません。これはなぜですか?皆さんありがとう。

4

0 に答える 0