Это легко достигается либо программно, в вашем коде, либо декларативно в 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>
Более подробную информацию можно найти в статье MSDN на System.Net.
источник
Этот однострочник работает для меня:
CredentialCache.DefaultNetWorkCredentials
- это настройки прокси, установленные в Internet Explorer.WebRequest.DefaultWebProxy.Credentials
используется для всех подключений к Интернету в приложении.источник
Код Foole отлично работал у меня, но в .NET 4.0 не забудьте проверить, является ли Proxy NULL, что означает, что прокси не настроен (вне корпоративной среды)
Итак, вот код, который решил мою проблему с нашим корпоративным прокси
WebClient web = new WebClient(); if (web.Proxy != null) web.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
источник
Этот код сработал для меня:
WebClient wc = new WebClient(); wc.Proxy.Credentials = CredentialCache.DefaultCredentials;
источник
Автоматическое определение прокси-сервера - это процесс, с помощью которого система идентифицирует веб-прокси-сервер и используется для отправки запросов от имени клиента. Эта функция также известна как автоматическое обнаружение веб-прокси (WPAD). Когда включено автоматическое определение прокси, система пытается найти сценарий конфигурации прокси, который отвечает за возврат набора прокси, который может использоваться для запроса.
http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx
источник
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);
источник
Я собираюсь использовать пример, чтобы добавить к приведенным выше ответам.
Я столкнулся с проблемами прокси при попытке установить пакеты через установщик веб-платформы.
Это тоже использует файл конфигурации, который является 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>
Для использования модуля необходимо зарегистрировать его в установщике веб-платформы.
источник