回答:
これは、プログラムで、コードで、または宣言的にweb.configまたはapp.configで簡単に実現できます。
次のようにプログラムでプロキシを作成できます。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", [your proxy port number]);
myproxy.BypassProxyOnLocal = false;
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
基本的WebProxy
に、request
オブジェクトのproxy
プロパティにオブジェクトを割り当てています。これによりrequest
、proxy
定義したものが使用されます。
同じことを宣言的に実現するには、次のようにします。
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[your proxy address and port number]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
web.configまたはapp.config内。これにより、すべてのhttp要求が使用するデフォルトのプロキシが設定されます。正確に何を達成する必要があるかによって、defaultProxy / proxy要素の追加の属性の一部が必要になる場合と必要とされない場合がありますので、それらのドキュメントを参照してください。
BypassProxyOnLocal
すぐにプロパティをTrue(必要な場合)に設定することをお勧めします。
を使用WebClient
している場合は、使用できるProxyプロパティがあります。
他の人が述べたように、プロキシ設定の検出/使用を自動化するにはいくつかの方法があります
Web.Config:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="true" bypassonlocal="true" />
</defaultProxy>
</system.net>
この記事で説明されているWebProxyクラスの使用。
プロキシ設定(構成またはコード)を直接構成することもでき、アプリはそれらを使用します。
Web.Config:
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[proxy address]:[proxy port]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
コード:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
WebProxy myproxy = new WebProxy("[proxy address]:[proxy port]", false);
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
このコードを試してください。httpリクエストを行う前に呼び出します。このコードでは、Internet Explorerの設定からプロキシを使用します。ただし、proxy.Credentials = ....
プロキシサーバーはNTLM認証済みのインターネットアクセラレーションサーバーであるため、使用します。ちょっと気をつけて。
static void setProxy()
{
WebProxy proxy = (WebProxy)WebProxy.GetDefaultProxy();
if(proxy.Address != null)
{
proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
WebRequest.DefaultWebProxy = new System.Net.WebProxy(proxy.Address, proxy.BypassProxyOnLocal, proxy.BypassList, proxy.Credentials);
}
}
WebProxy.GetDefaultProxy
Framework 4.5から廃止され、このメソッドはnullを返します。使用する前によく考えてくださいCredentialCache.DefaultNetworkCredentials
。CredentialCacheに何かを入れていて、プロキシがそのような資格情報を必要とする場合、それは機能するはずです。それ以外の場合は役に立ちません。
アプリでシステムのデフォルトプロキシを使用する場合は、これをApplication.exe.configに追加します(application.exeはアプリケーションの名前です)。
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="true" bypassonlocal="true" />
</defaultProxy>
</system.net>
詳細については、System.NetのMSDN記事を参照してください。
このワンライナーは私にとってはうまくいきます:
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
CredentialCache.DefaultNetWorkCredentials
Internet Explorerで設定されたプロキシ設定です。
WebRequest.DefaultWebProxy.Credentials
アプリケーションのすべてのインターネット接続に使用されます。
自動プロキシ検出は、Webプロキシサーバーがシステムによって識別され、クライアントに代わって要求を送信するために使用されるプロセスです。この機能は、Webプロキシ自動検出(WPAD)とも呼ばれます。自動プロキシ検出が有効になっている場合、システムは、要求に使用できる一連のプロキシを返す責任があるプロキシ構成スクリプトを見つけようとします。
var getHtmlWeb = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.GetEncoding("iso-8859-2") };
WebProxy myproxy = new WebProxy("127.0.0.1:8888", false);
NetworkCredential cred = (NetworkCredential)CredentialCache.DefaultCredentials;
var document = getHtmlWeb.Load("URL", "GET", myproxy, cred);
上記の回答に追加する例を使用します。
Web Platform Installerを介してパッケージをインストールしようとすると、プロキシの問題が発生しました
それもWebPlatformInstaller.exe.configである構成ファイルを使用します
私はこのIISフォーラムで提案されている編集を試してみました
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy enabled="True" useDefaultCredentials="True"/>
</system.net>
</configuration>
そして
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://yourproxy.company.com:80"
usesystemdefault="True"
autoDetect="False" />
</defaultProxy>
</system.net>
</configuration>
これらはどれも機能しませんでした。
私のために働いたのはこれでした-
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="false">
<module type="WebPI.Net.AuthenticatedProxy, WebPI.Net, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79a8d77199cbf3bc" />
</defaultProxy>
</system.net>
モジュールを使用するには、モジュールをWebプラットフォームインストーラーに登録する必要がありました。