2

サーバーを起動してクライアントを介してメッセージを送信するときにWCF(netTcpBinding)を使用する単純なクライアントサーバーアプリがありますが、サーバーを手動で閉じて再度開くと(クライアントアプリを閉じずに)すべて)次にクライアントがサーバーにメッセージを送信しようとすると、この例外が発生します(クライアント側で):

ソケット接続が中止されました。これは、メッセージの処理エラー、リモートホストによる受信タイムアウトの超過、または根本的なネットワークリソースの問題が原因である可能性があります。ローカルソケットのタイムアウトは「00:00:59.9843903」でした。

basicHttpBindingを使用すると、問題は発生しません。

この問題が発生する理由を知っている人はいますか?ありがとう、リラン

4

1 に答える 1

5

これは予期される動作です。サーバーを閉じると、サーバー上のTCP接続が閉じられ、クライアントから呼び出すことができなくなります。サーバーを再起動しても解決しません。クライアントで例外をキャッチし、現在のプロキシを中止し、新しいプロキシを作成して開く必要があります。

BasicHttpBinding では、NetTcpBinding がプロキシの全期間にわたって単一のチャネルを使用するため (チャネルは TCP 接続にバインドされます)、BasicHttpBinding は呼び出しごとに新しいチャネルを作成します (既存の HTTP 接続を再利用するか、接続が存在しない場合は新しいチャネルを作成します)。

于 2010-09-06T14:42:35.750 に答える