問題タブ [servicepointmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ChannelFactory: Channel Close() が接続を閉じていない (netstat が ESTABLISHED を示している)
WCF サーバーと通信している WPF アプリケーションがあります。
1 つの ChannelFactory を使用して、呼び出しごとにチャネルを作成しています。
アプリケーションの起動時にサーバーに多くの要求があり、ある時点で停止してタイムアウトになります。netstat を見ると、サーバーへの接続が確立されていることがわかります。
ServicePointManager.DefaultConnectionLimit を 10 に変更すると、サーバーへの呼び出しをさらに処理できますが、しばらくするとタイムアウト例外が発生して停止します。
ServicePointManager.DefaultConnectionLimit を int.MaxValue に設定すると、すべてのリクエストが処理されますが、サーバーへの ESTABLISHED 接続が約 720 あります (サーバーの netstat で同じ結果が得られます)。
私はここで2つのことについて混乱しています:
- WCFは接続をプールしていないようですが、リクエストごとに新しい接続を作成しています
- チャネルを閉じた後でも、接続は確立されたままのようです。
ServicePointManager.FindServicePoint(new Uri(" https://server:3000 "));も確認しました。そして、CurrentConnections が ServicePointManager.DefaultConnectionLimit として設定した制限に達していることを確認します。
ServicePointManager.MaxServicePointIdleTime を 500 に減らしました。これにより、接続がより速く閉じられますが、呼び出すたびに接続が作成されます。
サーバーと通信するときに既存のチャネルを再利用するようにチャネル ファクトリを説得するにはどうすればよいですか。
これは私のバインディングです: