1

アプリケーション (.Net 1.1) がシステム構成のプロキシ サーバーを使用するために (proxy.pac スクリプトを介して)、WinHTTP 関数 WinHttpGetProxyForUrl への相互運用呼び出しを使用し、レジストリから取得した proxy.pac url を渡しました。

残念ながら、proxy.pac ファイルがユーザーのハード ドライブにローカルにデプロイされ、URL が「file://C://xxxx」であるため、これが機能しないデプロイ シナリオに遭遇しました。

WinHttpGetProxyForUrl ドキュメントで明確に述べられているように、http および https スキームでのみ機能するため、file:// では失敗します。

この問題に対する 2 つの「醜い」解決策を検討しています (pac ファイルは JavaScript です)。

  1. 単一の静的メソッド Eval(string) を持つ単一のクラスで別の JScript.NET プロジェクトを作成し、それを使用して実行時に pac ファイルから読み取った関数を評価します

  2. 実行時に JScript.NET アセンブリをビルドしてロードします。

これらのソリューションは本当に醜いので:)、より良いアプローチを知っている人はいますか?相互運用を通じて使用できる Windows 機能はありますか?

そうでない場合、上記の 2 つの解決策についてどう思いますか? どちらを選びますか?

4

4 に答える 4

3

考えてみてください:ローカル PAC ファイルを localhost ソケット経由で提供できるマイクロ Web サーバーを作成してみませんか。コンテンツにはランダムな URI を使用して、予期しない方法でこれを参照することが困難になるようにする必要があります。

次に、 http://localhost:1234/gfdjklskjgfsdjgklsdfklgfsjklのような URL をWinHttpGetProxyForUrl 関数に渡し、マイクロ サーバーから PAC ファイルをプルできるようにします。

(ハック…ハック…ハック…)

于 2008-11-25T16:08:13.670 に答える
1

FWIW: https://web.archive.org/web/20150405115150/http://msdn.microsoft.com/en-us/magazine/cc300743.aspxでは、JScript.NET エンジンを使用してこれを安全に行う方法について説明しています。

https://web.archive.org/web/20090220132508/http://msdn.microsoft.com/en-us/library/aa383910(VS.85).aspxでは、WinINET の実装の使用方法について説明しています。

于 2009-10-07T03:31:20.380 に答える
0

残念ながら、あなたの問題に答えることはできません (ただし、数年前に私は jscript.net で遊んでいましたが、そのようにビルドして実行するには数行しかかかりませんでした)

しばらく前に、個人的な回避策のオフィス プロキシ ファイルで同様の proxy.pac の問題が発生しました。私のPC上のすべてのものと完璧に。

提供されているものに屈して作業するのが最善の場合もあります:)

于 2008-09-15T15:51:28.387 に答える
0

ご質問に直接お答えすることはできませんが、mozilla の実装から作業を進めると、ファイル URL のサポートについて明確な議論がありました。これは、ネットワーク制御とローカル ユーザーの利便性に関する議論でした。

于 2008-10-22T21:23:42.007 に答える