1

.Net リモーティングを使用して C# でクライアント/サーバー モデルを作成しました。クライアントがサーバーに接続されている場合、サーバーがダウンしている間にクライアントからサーバーメソッドを呼び出そうとせずにサーバーを強制終了して再起動すると、問題なく再接続できます。

サーバーを閉じてからクライアントからサーバーにpingを実行しようとすると(無限の待機を避けるために別のスレッドから実行します)、サーバーがオンラインに戻ったときに、クライアントはサーバーと通信できず、起動されたPingスレッドダウンタイムの間、リモーティング ライブラリの奥深くで永遠に待機します。これを中止しようとしましたが (スレッドに参加しようとしてしばらくして失敗した場合)、中止しません。これが問題の一部であるかどうかは疑問です。

別のクライアントを起動すると、そのクライアントはサーバーと問題なく通信できます。元のクライアントの一部を再起動する必要があると考えましたが、何をシャットダウンする必要があるかわかりません。私は確かに接続しているサーバーを無効にし、同じアドレスで Activator.GetObject を呼び出します (2 番目のクライアントがサーバーに接続するために行うことで、問題なく動作します) が、サーバーを再取得してもまったく役に立ちません。

サーバーは、RegisterWellKnownServiceType を介してシングルトンとして実行されています。

4

3 に答える 3

1

.NET リモート処理は必須ですか、それとも代わりにWCFへの移行を検討できますか? プロトコルはより適切に分解され、必要に応じてより明確に公開されます。

于 2009-04-16T20:14:42.123 に答える
1

私はwiresharkから始めて、それを使って実際に何が起こっているかを確認します。

于 2009-04-16T19:45:22.773 に答える
0

私は同様の問題を解決していました。リモーティング用の構成ファイルを使用して動作する.NETリモーティングアプリケーションと、より大きなアプリケーションに統合する必要のある.NETリモーティングのルーチンがありました。Activator.GetObjectプロキシのインスタンスが返されることで、これをより大きなプロジェクトに統合しました。プロキシインスタンスからのメンバーの呼び出しがあるとすぐに、それはメンバー呼び出しの中に終わり、降りることができませんでした。より大きなアプリケーションにはすでにさまざまな構成ファイルが含まれているため、私がそこに配置した.NETリモーティング構成と、別の構成の別の構成が含まれており、問題の核心がありました。.NETリモーティング構成を新しい空の構成ファイルに配置した後、より大きなアプリケーションの.NETリモーティングが機能し始めました。

于 2011-10-19T22:54:35.603 に答える