2010-12-13 8 views
13

私は、インターネットエクスプローラを使用して設定プロキシ設定を検出し、.NETで問題を抱えています。.NETプロキシ検出

私はプロキシをサポートするクライアントアプリケーションを書いている、と私はHTTPとHTTPSのためのさまざまな認証方式をサポートするために、9台のイカサーバーのアレイを設定しテストします。私はどちらの設定(どのプロキシ、 "自動"、PAC、またはハードコード経由での検出)にIEを更新するスクリプトを持っています。

Iは、.NETを介してIEの設定を検出するために、以下の3つの方法を試みました。私は.NETが間違ったセットのプロキシサーバーを選択することがあることに気づきます。 IEには正しい設定があり、IEでWebを閲覧すると、wiresharkを介して正しいサーバーに接続しているのがわかります。ここで

WebRequest.GetSystemWebProxy().GetProxy(destination);

GlobalProxySelection.Select.GetProxy(destination);

WebRequest.DefaultWebProxy

私が持っている次のヒントです:

  • 私のスクリプトは、ウェブサーバ上のPACファイルを設定し、IEで設定を更新その後、IEのキャッシュをクリアし
  • .NETがいるようです特定のプロキシ設定で「スタック」してしまいました。変更があったことを認識するために.NETの別の設定を設定する必要があります。時折、それはサーバのいくつかのランダムなセットを選択するようだ(私は彼らが、私は一度使用して、いくつかのキャッシュされたPACファイルか何かにあるサーバーのセットだけをランダムじゃないと確信しています)。 HTTP」「18のhttp:// squidserver」を、代わりにそれが返されますと同じように、私は「https://www.secure.com」宛先のプロキシをチェックし、私はIEがために設定している可能性があり、したがって、得ることを期待します:// squidserver:28 "(ポート18はNTLMを実行し、28は認証なしで実行します)。すべてのイカサーバーが動作します。
  • これは、常に
  • 時間は常に問題を解決して動作しますIEのプロキシサーバーをハードコーディングXP上の問題、唯一ビスタ、2003、およびWindows 7
  • ではありません - 私はおよそためにコンピュータを残す場合20分または30分後に戻ると、キャッシュされたPACスクリプトの有効期限が切れた場合と同様に、.NETは正しいプロキシ設定を取得します。
+0

した後、あなたはUseDefaultProyを使用することができませんか? – Aliostad

+0

UseDefaultProxy?オンラインで何かを見つけることができません。 – Dlongnecker

+0

これはまったく役に立ちますか? - > http://stackoverflow.com/questions/1023635/detect-proxy-settings-of-default-web-browser-c/1023978#1023978 – adrianbanks

答えて

4

私は解決策を見つけました。

.NETは「WinHttp Web Proxy Auto Discovery Service」を使用してPACスクリプトの実行を実行し、おそらく結果をキャッシュします。単にこのサービスを停止して再起動するのは、このトリックです。次のコマンドラインは私のためにこれを行います。

NET STOP WinHttpAutoProxySvc 
NET START WinHttpAutoProxySvc 

http://wiki.blackviper.com/wiki/WinHTTP_Web_Proxy_Auto-Discovery_Service

私は、デバッガをアタッチするジェームズ・コバチの提案に従うことによって、これを見つけました。私はすでにコードを反映し、質問を投稿する前にデバッガをアタッチしようとして失敗しましたが、何が起きているかを正確に解読できませんでした。オプションの不足、私は再びデバッグを試みたが、数時間は、この発見に私を導いたライン76上の_AutoPWebProxyScriptEngine.csで、次のコメントを見つけ

 // In Win2003 winhttp added a Windows Service handling the auto-proxy discovery. In XP using winhttp 
     // APIs will load, compile and execute the wpad file in-process. This will also load COM, since 
     // WinHttp requires COM to compile the file. For these reasons, we don't use WinHttp on XP, but 
     // only on newer OS versions where the "WinHTTP Web Proxy Auto-Discovery Service" exists. 
+0

リンクは今死んでいます。私は同じ情報のように見えるこのリンクを見つけましたが、これは本当に同じことが100%わからないので、質問に編集するつもりはありません。 http://www.blackviper.com/windows-services/winhttp-web-proxy-auto-discovery-service/ –

0

私は同じ問題を持っていた私は、レジストリ内のプロキシ設定を設定/取得succeded:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] 
"ProxyServer"="<your proxy IP address>:8080" 
"ProxyEnable"=dword:00000001 
"ProxyOverride"="<local>" 
+0

チップのおかげで、Radu。残念ながら、私はプロキシ設定を検出し、設定しないようにしています.IEが自動検出プロキシに設定されている場合、このキーの周りのreg設定は役に立ちません。そして、私は自分のAuto Proxy Detectorを書くつもりはない。 – Dlongnecker

関連する問題