クライアントで WebRequest を使用して、インターネット上の Web サービスを使用します。各リクエストは個別のスレッドでトリガーされます。
IIS でクライアントをホストしている場合はうまく機能します。ただし、クライアントが Windows サービスでホストされている場合、ほとんどの要求はタイムアウト エラーになります。
Fiddler を使用して問題をデバッグしようとしたところ、すべてのトラフィックが 127.0.0.1:8888 を通過したため、WebRequest は正常に機能しました。
Fiddler がないと、トラフィックはランダムなポートを介して直接インターネットに送られ、タイムアウトの問題が再び発生します。
Windows サービスは、ローカル システム アカウントで実行されます。
クライアントがプロキシを使用せずに Windows サービスを使用している場合、タイムアウトになるのはなぜですか?
更新: 私の最初の質問は明確ではありませんでした。要求は同時に (または非常に短い間隔で) 行われます。これは、ServicePoint クラスの接続制限に関係しています。デフォルトでは、同じ外部宛先に対して 2 つの接続のみが許可されます。宛先がローカルの場合、制限は int.Max 値になります。そのため、フィドラーはプロキシの問題を魔法のように修正できます。そのため、手動で DefaultConnectionLimit を 100 に設定すると、リクエストはオンラインになります。