4

WebClient クラスを使用して Web サーバーへの HTTPS POST を実行する比較的単純な機能があります。このコードは確実に機能しますが、EarthLink または AT&T のダウンロード アクセラレータ機能を使用すると問題が発生します。

ダウンロード アクセラレータは、ダイヤルアップ接続のプロキシ設定を変更して、HTTP プロトコルのみに localhost:8080 を指定することによって機能します。この構成では、おそらく HTTPS プロトコルは影響を受けないはずです。実際、Internet Explorer を使用してhttps://www.wellsfargo.comに移動すると、エラーは発生しません。

ただし、.NET 2.0 (または 3.5) を使用する場合、WebClient クラスは、この構成でhttps://www.wellsfargo.comからの単純な HTTPS GET を実行できません。

簡単なテストとして、次のことを行います。

次の場合に、高度な LAN プロキシ構成を指定します。

HTTP アドレス: whacked:8080

安全なアドレス: securewhacked:8081

C# では、次の関数を呼び出します。

IWebProxy defaultWebProxy = WebRequest.DefaultWebProxy;
Uri proxyUri = defaultWebProxy.GetProxy("https://www.wellsfargo.com");

proxyUri は「securewhacked:8081」である必要があります。

代わりに、proxyUri は "whacked:8080" です。

これは、.NET の「自動」プロキシ使用におけるバグのようです。その結果、ダウンロード アクセラレータをオンにすると、ソフトウェアが失敗します。

ここで何が起こっているか知っている人はいますか?

お客様がアクセラレータを無効にするのは比較的簡単であることはわかっていますが、ユーザーがアクセラレータを無効にする必要がなく、ソフトウェアがすぐに動作することを望んでいます。

任意の提案をいただければ幸いです。

4

1 に答える 1

0

アクセラレータは、ユーザー(IE)のプロキシ設定、マシン(WinHTTP)のプロキシ設定、またはその両方に設定されていますか?proxycfg -uIEの場合は、IE設定をWinHTTPにインポートするために使用してみてください(これがWebClient(そして一般的には.NETが)使用するものであると私は信じているため)。

于 2009-01-19T09:56:57.510 に答える