問題タブ [httpwebrequest]
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.
httpwebrequest - HTTP リクエストをできるだけ少なくすることと、開発を容易にするためにファイルを分割することのどちらが重要ですか?
インターネットで Web 開発について読んでいると、javascript ファイルと css ファイルを複数のファイルに分割する必要があるとよく耳にします。
css ファイルを次のように分割します。
- clear.css
- base.css
- page_specific.css
または、配置、色、タイポグラフィの情報を含むファイルに分割する必要もあります。
しかし、ブラウザは同時に 2 つの http 要求しか作成できないというのは本当ではないでしょうか? ファイルをその数に分割すると、http 要求の負荷全体が作成されます。それらを、ページ固有のファイルとベース/クリア css ファイルの 2 つのファイルに分割する方がよいのではないでしょうか? そして、大量のキャッシュヘッダーでそれらを送信しますか?
ファイルを分割する方が開発が簡単なのは理解できますが、速度がより重要ではないでしょうか?
c# - .NET でのマルチスレッド HttpWebRequests のパフォーマンスの向上
Web サービスのスループットを測定しようとしています。
そのために、リクエストを継続的に送信し、多数のスレッドからレスポンスを読み取る小さなツールを作成しました。
各スレッドの内部ループの内容は次のようになります。
何かがツールを制限しているように見えることを除いて、問題なく動作しているようです。ツールの 2 つのインスタンスを 40 スレッドごとに実行すると、80 スレッドの 1 つのインスタンスよりもスループットが大幅に向上します。
ServicePointManager.DefaultConnectionLimit プロパティを見つけました。これを 10000 に設定しました ( Jader Dias の提案に従ってapp.config で設定しても違いはありません)。
.NET または私のマシンに、パフォーマンスに影響を与える可能性のある他の設定はありますか? (Vista を実行していますが、Windows Server 2003 でも同じ問題が発生します)。
おそらく、単一のプロセスが確立できる接続の数にいくつかの制限がありますか?
c# - 受信した Cookie からログインの成功を理解することはできますか?
C# アプリケーションの開発中 (私の最初の C# アプリ):
- ユーザーからログイン情報を取得します (ID、パス)。
HttpWebRequest
ASP.NET Web ページへの新しい接続を開きます- 取得した [id,pass] タプルでこのページへのログインを試みます。ログインが成功
HttpWebRequest
すると、別のページへのログインに使用される Cookie がオブジェクトに含まれます。
2 番目の (保護された) ページをリクエストする前に、最初のログインが成功したことを確認したいと思います。最初に、ログインが成功した場合にのみ、サーバーが Cookie を送信すると考えました。そうではありません。:)
受信した Cookie オブジェクトから、ログインが成功したことがわかりますか? または、この問題を解決するために提案できる他の方法はありますか?
asp.net - .NET の HttpWebRequest を使用した SSL 接続を理解する
私はこれについて頭をつかむことができないようです。HttpWebRequest を使用して、データを別のサイトに送信しようとしています。ファイアウォールを構成する最善の方法を見つけようとしていますが、途方に暮れています。NetMon のトレースを見ると、私が言ったことを無視しているように見えます。私が見る HTTP ヘッダーは、リクエスト (ブラウザからサーバーへのリクエストではなく、サーバーからリモートサーバーへのリクエスト) から送信されます。
TCP DstPort も常に HTTP(80) で始まるようです。何があっても、最初は 443 を処理できないようです。SSL は、「実際の」送信を開始する前に、ポート 80 のネゴシエートで開始しますか? 起動するには、このリクエストは、リクエストを開始する前に設定しようとした HttpWebRequest 設定を無視しているようです。HTTP 1.0 または keep-alive を false に設定しても、上記のヘッダーから始まります。
それは何をしているのですか?通過させる方法を知りたいのですが、なぜその動作を示しているのかわからないのですか?
役立つ場合は、以下のコード。
Google やその他の SSL/HttpWebRequest の問題を精査しましたが、特効薬は思いつきません。
c# - .NET でコンストラクターなしでクラスを継承する方法はありますか?
現在、いくつかの HttpWebRequest 関数を変更しようとしていますが、HttpWebRequest には (逆シリアル化コンストラクター以外に) パブリック コンストラクターがないため、継承によってそれを行うことはできません。これを行うための回避策はありますか?
私の目的は、以下の例のようなコードを作成することですが、このクラス オブジェクトは HttpWebRequest のプロパティとメソッドを継承する必要があります。
proxy - http リクエストからクライアントの一意性を判断する方法は?
HTTP 要求がクライアントからプロキシ サーバー経由で行われる場合、要求の IP アドレスは常にプロキシの IP アドレスになることに気付きました。そのため、プロキシ サーバーを使用する大企業の多数のクライアントが Web サイトにアクセスする場合、その要求が固有のクライアントからのものかどうかはわかりません。http リクエストがプロキシ経由である場合、クライアントの一意性を判断する方法はありますか? http リクエストに MAC アドレスが含まれていないことはわかっているので、ほぼ除外しました。
c# - 中止された HttpWebRequest を再度リクエストする方法は?
私の目的は、失敗したときに非同期 HttpWebRequest を再試行することです。
HttpWebRequestをAbort()すると、BeginGetResponse() を再度実行できません。したがって、再度リクエストする唯一の方法は、おそらく HttpWebRequest オブジェクトを再作成することです。古いオブジェクトからすべてのプロパティをコピーする必要があるため、多くの作業が必要になるようです。ショートカットはありますか?
注: シリアル化で問題が解決すると思いますが、前の質問で説明したように、このクラスはシリアル化されません。
更新不要なため、サンプル ソース コードを削除しました
この問題に関する現在の見解近道はありません。リクエストをやり直す唯一の方法は、元のオブジェクトを作成したのと同じ方法で別の HttpWebRequest オブジェクトを作成することです。
c# - POSTを使用したHttpWebRequestのパフォーマンス
Webサービスのテストに使用する小さなツールがあります。
POSTまたはGETを使用してWebサービスを呼び出すことができます。
POSTを使用するためのコードは
GETを使用するためのコードは次のとおりです。
ご覧のとおり、コードは非常に似ています。どちらかといえば、GETメソッドはBase64でデータをエンコードして送信する必要があるため、少し遅くなると思います。
しかし、それを実行すると、POSTメソッドがGETメソッドよりもはるかに多くの処理能力を使用していることがわかります。私のマシンでは、約5%のCPUを使用してGETメソッドの80スレッドを実行できますが、POSTメソッドの80スレッドは95%のCPUを使用します。
POSTの使用に関して本質的に高価なものはありますか?POSTメソッドを最適化するためにできることはありますか?異なるクライアントからのリクエストをシミュレートしたいので、接続を再利用できません。
dotTraceは、POSTを使用すると、処理時間の65%がwebRequest.GetResponse()に費やされると報告しています。
基盤となるWebサービスは、違いが生じる場合はDigest-Authenticationを使用します。
c# - HttpWebRequest UnsafeAuthenticatedConnectionSharing プールをクリアする
現在のプロセスの UnsafeAuthenticatedConnectionSharing プールのプールをクリアすること、つまり認証済みのプールされた接続をすべて閉じることは可能ですか?