12

リモートビルドマシンで、単体テストを実行すると、次のエラーが発生します。

テストメソッドMyNameSpace1.MyNameSpace2.Service.Test.MyPath.XYZServiceTest.FindRecordが例外をスローしました:System.ServiceModel.EndpointNotFoundException:net.tcp://localhost/MyABCServices/XYZService.svcに接続できませんでした。接続の試行は00:00:02.0086605の期間続きました。TCPエラーコード10061:ターゲットマシンが127.0.0.1:808をアクティブに拒否したため、接続できませんでした。---> System.Net.Sockets.SocketException:ターゲットマシンがアクティブに拒否したため、接続を確立できませんでした127.0.0.1:808

このビルドマシンへのアクセスは非常に限られています。ビルドマシンのiisや、ローカルの開発マシンのようなサービスにアクセスできません。ユニットテストは私のローカル開発マシンで動作しますが、ビルドマシンで上記のエラーが発生します。

このエラーをデバッグするにはどうすればよいですか?防火壁の確認などを読んだことがありますが、どうすればいいのかわかりません。このサービスのWindowsサービスがビルドマシンで稼働しているかどうかを確認できません。ビルドマシンにログインするか、IISをこのリモートマシンに接続しようとしましたが、できませんでした。

4

5 に答える 5

12

私にとって最も一般的な問題は、WindowsサービスNet.Tcpリスナーアダプターがホスティングマシンで実行されていないことです。

また、IIS Webアプリケーションをチェックして、有効なプロトコルにnet.tcpが含まれていることを確認します。たとえば、私のものには「http、net.tcp」があり、バインディングには「http ::94:、net.tcp:194:」があります。

IISが正しく構成されているか、Windowsサービスが実行されているかをリモートで確認する良い方法がわかりません。これらの値を確認できるサーバー管理者がいませんか?

于 2012-12-21T01:35:55.037 に答える
11

Net.Tcpリスナーアダプタサービスを開始すると、問題が修正されました。

Net.Tcpリスナーアダプタサービスを開始すると、問題が修正されました。

于 2015-10-23T04:27:21.210 に答える
2

127.0.0.1:808実際のIP:ポートはエラーで報告されていますか?その場合は、IPを修正する必要があります(127.0.0.1はと同義でlocalhostあるため、ローカルコンピューターになります)。

それ以外の場合、これはファイアウォールの問題のように見えます。

ファイアウォールには2つの一般的なソースがあります。

  • ルーター
  • OS

ルーターファイアウォールは通常、内部ネットワークをインターネットに接続するルーターにあります。このような場合、あなた(またはアクセス権を持つ人)はルーターにログインし、ポートをマシンのIPに転送する必要があります。これは、通信しようとしている2台のコンピューターが同じ内部ネットワーク上にない場合にのみ必要です。
たとえば、コンピュータがインターネット経由でサーバーに接続している場合は、ポート転送を設定する必要があります。両方のコンピューターが同じオフィスの同じネットワーク上にある場合、ポートフォワーディングは必要ありません(これが当てはまらない場合は大企業では一般的ですが、ポートの問題に対処するITまたはネットワーク担当者がいます)。

サーバーがWindowsを実行していると仮定すると、ログインしてポートを開くか、サービスが着信要求を受け入れることを許可するには、Admin(?)アクセス権を持つユーザーが必要になります。サーバーにアクセスできないことを示したので、サーバーの担当者に構成を確認してもらうことをお勧めします。

于 2012-12-21T01:25:02.880 に答える
1

私が読んだように、「単体テスト」は明らかに、ローカルホストアドレスにあるWCFnet.tcpエンドポイントを想定しています。だから、それが機能するためには、あなたはどちらか

  • ビルドサーバーに必要なサービスを追加します。これは、共有サーバーであるか、別のチームが所有している可能性があります。または、私が知らないその他の問題、または
  • 単体テストを変更して、実際のライブWCFサービスではなく、モックまたは偽のサービスを期待するようにします。

私は(明らかに)2番目の選択肢をお勧めします。

于 2012-12-21T01:41:34.720 に答える
0

私を正しい方向に向けてくれた@sandeepと@Erikに感謝します。私のはWindows10システムです。.NetTcpListenderアダプターを持っていません。Net.tcpポート共有サービスがあり、無効になっています。有効にしてサービスを開始しましたが、正常に機能しました。今、私は以下のように同じポートで2つのエンドポイントをホストします

<services>
      <service behaviorConfiguration="mybehaviorConfiguration" name="FirstClass">
        <endpoint address="" binding="netTcpBinding" contract="IFirstClass"
           bindingConfiguration="netTcpBindingConfiguration" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:5000/MyService/FirstClass" />
          </baseAddresses>
        </host>
      </service>

      <service behaviorConfiguration="mybehaviorConfiguration" name="SecondClass">
        <endpoint address="" binding="netTcpBinding" contract="ISecondClass"
           bindingConfiguration="netTcpBindingConfiguration" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:5000/MyService/SecondClass" />
          </baseAddresses>
        </host>
      </service>
</services>

ここに画像の説明を入力してください

于 2020-08-18T20:47:05.843 に答える