問題タブ [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# - 設定ServicePointManager.ServerCertificateValidationCallback=nullが機能しないのはなぜですか?
一連の統合テストから呼び出している次のスニペットがあります。
ただし、特定のテスト実行の最初のテストのみが合格します...この行を実行すると、次のようになります。
このデリゲートを明示的にnullに割り当てたとしても、同じテスト実行でWebClientに証明書エラーを再度スローさせることはできません。また、明示的にfalseを返すようにしました。名前付きデリゲート参照を追加してから削除しようとしましたが、単に割り当て/再割り当てするのではなく、コールバックでSslPolicyErrorsをチェックして、policyErrors == SslPolicyErrors.None
何も機能しません。
(テスト環境の特定のURLが証明書の警告を返すことを明示的に確認しています。また、ユーザーが証明書の警告を無視すると、特定のページが表示されるため、証明書の処理が少し変わっていることも確認する必要があります)
何か案は?
c# - ServicePointManager.ServerCertificateValidationCallback がそのように設計されている理由は何ですか?
ServicePointManager.ServerCertificateValidationCallback
はグローバルな静的プロパティで、次のようにするだけで、アプリケーション内の任意のコードで上書きできます。
なぜ彼らはそれをそのように実装することに決めたのですか? 確かにそれはWebRequest
オブジェクトのプロパティである必要があり、証明書を無視する理由には十分な理由があるはずです。
ssl - RijndaelManaged と ServicePointManager によるセキュリティ
RijndaelManagedと ServicePointManagerに関するセキュリティ上の質問があります。
ユーザー資格情報や一部の XML データなど、C# アプリケーションがデータを暗号化するシステムを実装しました。次に、WebClient を使用して、暗号化されたユーザー資格情報を、指示を含む暗号化された XML ドキュメントと共に Tomcat Java Web アプリケーションに送信します。Java アプリケーションの仕事は、ユーザー資格情報と XML 命令を復号化することです。命令を実行し、暗号化された XML 結果で C# に応答します。
C# アプリケーションから Tomcat サーバーへのすべての接続は、SSL が有効になっています (現時点では自己署名証明書)。
最初の質問: 私の C# アプリケーションは、デフォルトで常に SSL が有効になっているサーバー (のみ) に接続しているという事実を考慮します。コールバック関数を次のように単純に実装できますか:
ServicePointManager.ServerCertificateValidationCallback = デリゲート { true を返します。};
コールバック機能は、接続先のサーバーで使用される証明書を識別して検証するために使用されることを理解しています。そのアプリケーションを (SSL を有効にして) サーバーに接続するクライアントの 1 つに渡すとしたら、上記のコードは満足できるものでしょうか? クライアントが私のアプリケーションを使用して、未知の別のサーバーに接続し、その SSL 証明書の状態についてまったくわからない場合、上記のコードを実際の証明書検証関数に置き換える必要があります。私の質問は理にかなっていますか?
2 番目の質問: 私の C# アプリケーションでは、RijndaelManaged を使用して暗号化/復号化を実装しています。しかし、私が使用しているキーは C# アプリケーションの一部です。アプリケーションは難読化されています。私が理解しているように、これは安全な方法ではありません。
C# アプリケーションが Web アプリケーションから暗号化/復号化キーを受け取るための信頼できる方法はありますか? または、Webアプリケーションでデータを復号化するために使用できるC#アプリケーションでキーを生成する方法はありますか?もしそうなら:そのキーをどのように生成し、最も重要なのは、信頼できる安全な方法でサーバーに送信する方法です.仕方。接続は SSL であるため、キーは単純に暗号化されたストリームの一部である可能性がありますか?
C# アプリで暗号化に使用しているコードを次に示します。
c# - ServicePointManager.ServerCertificateValidationCallback がヒットしない
次のコードがあります。
ただし、コードがValidateCertificate
メソッドに入ることはありません....標準を送信するとHttpsWebRequest
機能しますが、Webサービスを使用すると機能しません。私は何を間違っていますか?
c# - BindIPEndPointDelegate を使用して送信元ポートを指定しても機能しないようです
BindIPEndPointDelegate を使用して HttpWebRequest のソース ポートを変更する方法をあちこちで検索しました。これに関する複数の投稿を見つけました:
しかし、それは私のために働いていないようです。この男にも同じ問題が見つかりました: Visual Studio 2010 で SOAP Web サービスの発信/呼び出しポートを定義する
基本的に、Web ページに接続するときにソース ポートを変更したいと考えています。BindIPEndPointDelegate は非常に簡単です。
netstat -n を使用して接続を確認すると、送信元 IP アドレスとして myipaddress:8086、送信先 IP:80 が表示されるはずです。netstat に表示されるのは、指定したポートでループバック (127.0.0.1:8086) を作成していることです。netstat -nのスクリーンショットを見る
初めての投稿なので画像は載せません。というわけで画像はこちらから
BindIPEndPointDelegate がループ バック接続を作成するのはなぜですか? また、指定したポートで WebRequest をブラウザーのように動作させるにはどうすればよいですか?
私はwin7 Proボックスを使用しており、ローカルファイアウォールはなく、プロキシを経由していません。
c# - Mono C# はある Linux マシンでは正常に動作しますが、別のマシンでは動作しません! 多分証明書と関係がありますか?
SOAP サービスを呼び出すコードがいくつかあります。
私の最初の Linux マシンでは問題なく動作します。
ただし、別のマシンで実行すると、以下のエラーが発生します。
Google は、それが証明書からのものである可能性があることを示しているようですが、Wh ere
を介して証明書メソッドをオーバーライドしているため、これについてはわかりません。ServicePointManager.ServerCertificateValidationCallback = Validator;
Validator
何か案は?
c# - WPF の Imagecontrol が UI をフリーズさせる
WPF アプリケーションにユーザー Gravatar を表示したいと考えています。これは、Image-Control をバインドする方法です。
GravatarConverter が特定のメールの URL を返す場所。残念ながら、これは最初の画像をロードするときに UI を完全にブロックしています。「IsAsync=True」を使用していることに注意してください。いくつかの調査の結果、アプリケーションの起動時に別のスレッドで FindServicePoint を呼び出すと、この問題を回避できることがわかりました。
しかし、アプリケーションが既にイメージをダウンロードしている間に FindServicePoint が終了していない場合、これは機能しません。なぜWPF-AppがこのFindServicePointを必要とするのか、なぜこれがUIをブロックしているのか、ブロックを回避する方法を説明してもらえますか?
ありがとう
更新: Internet Explorer の [インターネット オプション] -> [接続] -> [LAN 設定] で [自動検出設定] のチェックを外したところ、問題が解決しました。
この非常に単純な WPF アプリケーションを使用して、テキスト ボックスに画像の URL を挿入し、ボタンをクリックするだけで問題を再現しました。「自動検出設定」を有効にすると、最初に画像が読み込まれたときにアプリが数秒間フリーズします。このオプションを使用すると、読み込みがすぐに無効になります。
MainWindow.xaml
MainWindow.xaml.cs
.net - WebException に続く ProtocolViolationException の回避
このバグの解決に取り組んでいます:
https://github.com/openstacknetsdk/openstack.net/issues/333
この問題にはProtocolViolationException
、次のメッセージが含まれます。
チャンク エンコーディングのアップロードは、HTTP/1.0 プロトコルではサポートされていません。
502 レスポンス コードを生成する Web リクエストを作成した後、チャンク エンコーディングで POST リクエストを使用する呼び出しを行うことで、問題を確実に再現できることがわかりました。これは、502 応答に続くServicePoint.HttpBehaviour
値を持つプロパティにまでさかのぼります。HttpBehaviour.HTTP10
次のハック(catch
ブロック内)を使用して問題を解決できました。ServicePoint
このコードは、失敗したリクエストによって作成されたインスタンスを から「隠し」、次のリクエストのためにServicePointManager
新しいインスタンスを強制的に作成します。ServicePoint
質問:
- なぜ私はこの行動を観察しているのですか?
- 問題を解決するための非ハッキーな方法は何ですか?
java - Java で同等の ServicePointManager
VB.net プロジェクトを Android アプリ用の Java に変換しようとしています。 私のVB.netコードは
このコードは Web リクエストを送信します。jsonを使用して、AndroidアプリからWebサーバーにWebリクエストを正常に送信しました。この2行以外はクリアです
Javaで同等のものを知っている人はいますか?事前に感謝します。
c# - Async HttpClient C# で接続を制限する方法
エンドポイントへの最大接続数を制限しようとしていますが、ServicePointManager.DefaultConnectionLimit を設定してこれを行っていますが、機能していません。これをテストするために、5 秒間スリープしてから戻るエンドポイントをセットアップしました。
これが私のコードです:
以下は出力です。
ご覧のとおり、非同期 HttpClient は最大接続数 1 によって制限されません。これは、3 つの呼び出しを並行して行うのに 5 秒かかるためです。非同期 WebClient は、並行して 3 つの呼び出しを行うのに 15 秒かかるため、1 つの接続によって制限されます。
私の質問は...非同期HttpClientを使用して最大接続を制限するにはどうすればよいですか?
ありがとう。