6

Webサービスを呼び出そうとしています。WPAD スクリプトを使用するプロキシを使用する必要があります。この WPAD スクリプトへの URL は、アプリケーションのデプロイごとに異なります。

IE には正しいプロキシ設定がありますが、アプリケーションはローカル システム アカウントで実行されている Windows サービスとして実行されているため、アプリケーションはこの Windows ユーザーの IE 設定を認識していません。

app.config に以下を入れると動作します:

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true" >
        <proxy autoDetect="True" scriptLocation="http://url.to/wpad.dat"/>
    </defaultProxy>
</system.net>

ただし、これにはユーザーが構成できないという制限があります。上記を(C#-)コードから動的に行う方法はありますか? また、上記により、プロキシを経由してはならない Web サービスの動作が変更されると思われます (ただし、確認していません)。

http://msdn.microsoft.com/en-us/library/system.net.webproxy.aspxで、役立つテキストを見つけました: "(WPAD 機能の使用方法を示す例については、IWebProxyScript クラスのドキュメントを参照してください。 )」ですが、例が見つかりませんでした:(。

4

2 に答える 2

1

コード プロジェクトに関するこの記事では、Windows API を使用して PAC スクリプトを実行し、特定の URL の正しいプロキシの詳細を返す方法を示します: http://www.codeproject.com/Articles/12168/Using-PAC-files-proxy

この関数を使用してプロキシの詳細を確認し、Web サービス オブジェクト プロキシを直接構成するか、WebRequest.DefaultProxy を変更することができます。

于 2012-01-24T14:33:09.660 に答える
0

IWebProxyScript は、WebProxy 自体によって内部的に使用されます。

WPAD スクリプトへの URL を使用して WebProxy を初期化すると、渡された要求の正しい URL が解決されます。その WebProxy を WebRequest に設定すると、リクエストのターゲットに対して正しいプロキシ URL の設定が自動的に処理されます。

WebRequest request = WebRequest.Create("http://targeturl");
request.Proxy = new WebProxy("http://url.to/wpad.dat");

次のように、特定のターゲットのプロキシ URL を取得することもできます。

WebProxy proxy = new WebProxy("http://url.to/wpad.dat");    
Uri proxyUri = proxy.GetProxy(new Uri("http://targeturl"));

これは、PAC スクリプトでは機能しません。

于 2014-03-07T18:27:14.123 に答える