ここから単純な .Net リモート処理の例をダウンロードしましたhttp://www.codeproject.com/Articles/8771/Simple-but-potentially-useful-example-of-NET-Remot。この例は機能します。サーバー側のコードは、クライアントによって呼び出されます。以下のコードのように、そのクライアント コードを自分の C# プロジェクトにコピーすると、SocketException: No connection could be made because the target machine fails.
編集 1 開始
それはさらに奇妙になっています。動作するクライアントとしてテスト プロジェクトがあり、その動作中のプロジェクトを作業中のソリューションに追加し、プロジェクトの新しいデバッグ インスタンスを実行すると (その時点でソリューションから実行された唯一のプロジェクトです)、それは私にSocketExceptionを与えます:ターゲットマシンが積極的に拒否したため、接続できませんでした。ソリューションベースの構成などと関係があるようです。
エンド 1 エンド
この奇妙な動作のために、何かが足りないかどうかを確認したかったのです。そこで、新しいソリューションで新しい (winforms) プロジェクトを作成し、まったく同じコードを新しい form1_load イベントに配置しました。サーバー側のコードは、この新しく作成された winforms アプリケーションによって呼び出されます。まったく同じコードを使用して、あるアプリケーションがリモーティング経由で接続してサーバー側のコードを実行でき、別のアプリケーションができないということはどうしてあり得るのでしょうか? はい、Windows ファイアウォールをオフにしました。他のファイアウォールはありません。
上記のすべては、1 台のコンピューターでテストされています。そのため、物理的なネットワークは関係ありません。
助言がありますか?
[STAThread]
static void Main()
{
TcpClientChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel);
IProcessActivator.IProcessActivator process_activator = (IProcessActivator.IProcessActivator)Activator.GetObject
(
typeof(IProcessActivator.IProcessActivator),
"tcp://localhost:9000/ProcessActivator"
);
process_activator.Run("IExplore.exe", @"http://www.codeproject.com");
}