0

以前はクライアントから正常に動作していた WCF サービスを実行しています。サービスをホストしている他のデバイスで Azure Compute Emulator を実行しています。これはローカル テストのみを目的としているため、次を使用してローカル ポートのポート リダイレクトを追加しました。

netsh interface portproxy add v4tov4 listenport=81 listenaddress=192.168.1.100 connectport=81 connectaddress=127.0.0.1

サーバーデバイスからサービス参照をインポートできるため、これは正常に機能します。ただし、アプリを実行し、サービス参照をnew ServiceReference1.ServiceClient()で初期化し、その最初のメソッドを呼び出そうとすると、EndpointNotFoundException が発生します。

特徴は次のとおりです。

  • 192.168.1.100:81 へのローカル接続は機能し、そこで同じクライアント ソフトウェアを使用できます。
  • 新しい WinForms (クライアントのターゲットは WinRT) プロジェクトを作成し、サービス参照を追加してメソッドを呼び出したところ、(リモート デバイスからも) 機能しました。

したがって、基本的には、サービス参照のこの 1 つのインスタンス (削除して追加しようとしましたが、サービス参照のインポートが機能しました!) だけが機能していません。デバッガーは、サービスへの最初のメソッド呼び出しで EndpointNotFoundException (例外には正しい IP とポート 192.168.1.100:81 が含まれています) をスローするだけなので、さらにデバッグするのは困難です。

メソッドを呼び出すコードはまったく同じです (つまり、new で初期化し、パラメータなしでクライアント メソッドを呼び出します)。これを引き起こす可能性のあるアイデアはありますか?

4

1 に答える 1

0

わかりました、これの原因がわかりました。私はローカルでのみ開発を行っていたので、以前は (Azure にデプロイしたときも) この問題は発生していませんでしたが、明らかに、私のようなローカル コンテキストで実行するには、「プライベート ネットワーク (サーバーとクライアント)」機能が必要です。もちろん、問題に対応するエラーを取得する方が良いでしょうが、少なくとも現在は解決しています。

この機能が「インターネット」機能から分離されている理由は何ですか?

于 2013-06-24T14:08:34.453 に答える