単一のホスト(API呼び出し)に約50のHTTP要求を発行する必要があります。パフォーマンスは重要なので、私はHTTP KeepAliveを使用したいと思います。 WebClientはこれをサポートしていますか?WebClientはKeepAliveを使用しますか?
答えて
これは私のマシン上にありますが、にはと記載されています。私は確かにそれがデフォルトで期待しています。最も簡単な方法はWireshark(またはFiddler)を実行して、何がワイヤーに流れているのかを正確に調べることです。
たとえば、このプログラム:
GET/HTTP/1.1
Host: www.microsoft.com
Connection: Keep-Alive
サブシーケンス要求はただ、次のとおりです:
GET/HTTP/1.1
Host: www.microsoft.com
...おそらく接続かつてので
using System;
using System.Net;
class Test
{
static void Main()
{
WebClient client = new WebClient();
for (int i = 0; i < 50; i++)
{
string text = client.DownloadString("http://www.microsoft.com");
Console.WriteLine(text.Length);
}
}
}
が最初の要求を生成しますキープアライブモードになっていれば、それはそのままになります。
ここで説明するように、WebClientはWebRequestをプライベート実装のhttp://msdn.microsoft.com/en-us/library/system.net.webclient.aspxで使用します。マイクロソフトはあなたを制御する公共財産としてそれを公開しません。
したがって、Reflectorを使用してその実装を検討すると、使用中のWebRequestオブジェクトに対してKeepAliveがどのように設定されているかがわかります。 @ Jonが指摘したように、実験ではKeepAliveがtrueに設定されていることが示されています。これは、.NET Remotingのプライベートな実装など、他のシナリオにもマッチします。
まれに、KeepAlive = trueがSocketExceptionにつながる可能性があります。反射やその他のトリックを使用してfalseに設定する必要があります。これは非常に面倒です。
オーバーライドされたメソッド –
でbase.GetWebRequest()を呼び出した後で、リフレクションを使用する必要はありません。継承し、GetWebRequest()をオーバーライドし、WebRequestでいくつかのプロパティを設定することができます。 –
https://msdn.microsoft.com/en-us/library/system.net.webclient.getwebrebreest.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2 – Ginkgo
- 1. ASP.NET WebClientを使用してxbox.comにログインしていますか?
- 2. WebClientとgetpageを使用
- 3. Spring 5 WebClient(sslを使用)
- 4. WebClientまたはHttpWebRequestを使用したログイン
- 5. WebClientを使用してSSRSからCSVファイルをダウンロードする
- 6. WebClientをWindows Ceで使用する。
- 7. webclientとWebRequestを使用したPOSTが機能しません
- 8. WebClientでアップロードをキャンセルしますか?
- 9. ASP.NET MVC内でWebClientを非同期で使用していますか?
- 10. AppAlign上のKeepAlive HTTPリクエスト
- 11. KeepAliveでCamel HTTP4を最適化する
- 12. C#でWebClientを使用してInfluxDBを照会する方法
- 13. FireNet AccessTokenを使用して.Net WebClientをアップロードする方法
- 14. WebClientを使用してHTTPS URLを呼び出す例外
- 15. WebClientを使用してイントラネットファイルを取得する
- 16. WebClientを使用してファイルのディレクトリをアップロードする
- 17. WebClientはどこにダウンロードしたデータを保存しますか?
- 18. Java WebClientを使用してRESTサービスを使用するためのデザインパターン
- 19. WebClientを使用してReactive Spring Rest APIを使用する方法
- 20. webclientを使用してsecure urlにアクセスする方法
- 21. WebClientリクエストで動詞GETを使用するには?
- 22. uWSGIが "--http-keepalive"フラグを尊重しないのはなぜですか?
- 23. WebClient Sprint 5 reactorウェブを使用したマイクロサービスの呼び出し
- 24. WebClientはURLからサーバーに画像をダウンロードします。C#
- 25. WebClientを使用してオブジェクトをWebApiコントローラに渡すことはできますか?
- 26. WebClientを使用してシリアル化されたデータをアップロード
- 27. WebClientを使用してアラビア語を読む
- 28. 保存ダイアログボックスでwebclientを使用してファイルをダウンロード
- 29. WebClientを使用してSilverlightアプリケーションにXMLデータをロードする方法は?
- 30. WebClientクラスを使用して大きなビデオファイルをダウンロードするには
私はいくつかの理由で、応答バイトが返されたときにクライアントのヘッダーがリセットされるため、UploadDataを使用するときにいくつかの奇妙な動作に気付きました。 – Oliver
@Oliver:それがあなたが意味することは本当にはっきりしませんが、それがあなたの問題を引き起こしているものなら、あなたは新しい質問をしたいかもしれません。 –
本当に問題ではないと思っていました。振る舞いは次のようになります。WebClientの作成 - >辞書へのヘッダーの追加 - > UploadDataの呼び出し - >ヘッダーが空になり、何らかの理由で核が壊れているようです。 – Oliver