Как я должен установить прокси по умолчанию для использования учетных данных по умолчанию?

Следующий код работает на меня:

var webProxy = WebProxy.GetDefaultProxy();
webProxy.UseDefaultCredentials = true;
WebRequest.DefaultWebProxy = webProxy;

К сожалению, WebProxy.GetDefaultProxy() удерживается от использования. Что еще я должен делать?

(использующий app.config для установки defaultProxy настройки не позволяется в моем развертывании),

62
задан 21 November 2012 в 17:22

9 ответов

От.NET 2.0 Вы не должны должны быть делать это. Если Вы явно не устанавливаете свойство Proxy на веб-запросе, оно использует значение статического WebRequest. DefaultWebProxy. Если Вы хотели изменить прокси, используемый всем последующим WebRequests, можно установить это статическое свойство DefaultWebProxy.

поведение по умолчанию WebRequest. DefaultWebProxy должен использовать те же базовые настройки, как используется Internet Explorer.

, Если бы Вы хотели использовать различные настройки прокси текущему пользователю затем, необходимо было бы кодировать

WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/");
webRequest.Proxy = new WebProxy("http://proxyserver:80/",true);

, или

WebRequest.DefaultWebProxy = new WebProxy("http://proxyserver:80/",true);

необходимо также помнить, что объектная модель для прокси включает понятие, что прокси может отличаться в зависимости от целевого имени хоста. Это может сделать вещи немного сбивающими с толку при отладке и проверке свойства webRequest. Прокси. Звоните

webRequest.Proxy.GetProxy(new Uri("http://google.com.au")) для наблюдения фактических деталей прокси-сервера, который использовался бы.

, кажется, существуют некоторые дебаты о том, можно ли установить webRequest.Proxy или WebRequest.DefaultWebProxy = null для предотвращения использования прокси. Это, кажется, работает хорошо на меня, но Вы могли установить его на new DefaultProxy() без параметров для получения необходимого поведения. Другая вещь проверить состоит в том, что, если элемент прокси существует в Вашем файле конфигурации приложений, Платформа.NET будет НЕ , используют настройки прокси в Internet Explorer.

статья MSDN Magazine Берет Нагрузку От Пользователей с Автоматической Конфигурацией в.NET , предоставляет более подробную информацию того, что происходит под капотом.

57
ответ дан 31 October 2019 в 13:18

Для тех, кто, в отличие от Brian Genisio, способен установить содержание файла конфигурации их приложения:-ничего не делают в коде. Вместо этого добавьте это к своему app.config / web.config.

<system.net>
  <defaultProxy useDefaultCredentials="true" />
</system.net>

Действительно и действительно значение по умолчанию для использования учетных данных по умолчанию должно быть "верным"; я видел, что эта проблема смущает столько людей - разработчики, пользователи, парни IT.

Для большего количества информации посмотрите здесь ОБНОВЛЕНИЕ:-http://sticklebackplastic.com/post/2007/01/26/Poxy-proxies.aspx

: я создал эту проблему/идею для Microsoft для изменения значения по умолчанию useDefaultCredentials от лжи до истинного так, чтобы эта целая проблема ушла, и приложения.NET "просто работают"; проголосуйте за него, если Вы соглашаетесь:
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2397357-fix-it-so-that-net-apps-can-access-http-thru-auth

101
ответ дан 31 October 2019 в 13:18
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;

Это вынудит DefaultWebProxy использовать учетные данные по умолчанию, подобный эффект, как сделано до UseDefaultCredentials = true.

Следовательно весь недавно создал WebRequest , экземпляры будут использовать прокси по умолчанию, который был настроен для использования учетных данных прокси по умолчанию.

15
ответ дан 31 October 2019 в 13:18

Можно использовать Отражение для установки UseDefaultCredentials - Свойство от Кода до "истинного"

System.Reflection.PropertyInfo pInfo = System.Net.WebRequest.DefaultWebProxy.GetType().GetProperty("WebProxy", 
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

((System.Net.WebProxy)pInfo.GetValue(System.Net.WebRequest.DefaultWebProxy, null)).UseDefaultCredentials = true;
4
ответ дан 31 October 2019 в 13:18

Этот поток стар, но я просто недавно споткнулся проблему defaultProxy, и возможно это помогает другим.

я использовал конфигурацию, устанавливающую в качестве предложенного Andrew. При развертывании его мой клиент получил ошибку при высказывании, не было достаточных прав установить конфигурацию 'defaultProxy'.

Не знание, почему я не имею права установить эту конфигурацию и что делать с этим, я просто удалил его, и это все еще работало. Таким образом, кажется, что в VS2013 эта проблема устраняется.

И в то время как мы в нем:

    WebRequest.DefaultWebProxy.Credentials = new NetworkCredential("ProxyUsername", "ProxyPassword");

использование прокси по умолчанию с Вашими учетными данными. Если Вы хотите вызвать не использование прокси, просто устанавливает DefaultWebProxy в NULL (хотя я не знаю, хотите ли Вы это).

2
ответ дан 31 October 2019 в 13:18

Походит в некотором более новом Приложении, Конфигурация отличается, как я видел по этому Вопросу , Как пройти проверку подлинности против прокси при использовании класса HttpClient?

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
         <proxy usesystemdefault="True" />
    </defaultProxy>
</system.net>

Также зарегистрированный на https://msdn.microsoft.com/en-us/library/dkwyc043.aspx

2
ответ дан 31 October 2019 в 13:18

В моем развертывании я не могу использовать app.config ни один для встраивания что предложенный Andrew Webb.
, Таким образом, я делаю это:

    IWebProxy proxy = WebRequest.GetSystemWebProxy();
    proxy.Credentials = CredentialCache.DefaultCredentials;

    WebClient wc = new WebClient();
    wc.UseDefaultCredentials = true;
    wc.Proxy = proxy;

На всякий случай Вы хотите проверить мои настройки IE:

enter image description here

1
ответ дан 31 October 2019 в 13:18

Это - новый предложенный метод.

WebRequest.GetSystemWebProxy();
0
ответ дан 31 October 2019 в 13:18

Потребность в некотором системном наборе, аннулируют Прокси proprerty:

Сеть. WebRequest. DefaultWebProxy. Учетные данные = Система. Сеть. CredentialCache. DefaultCredentials Тусклый запрос Как WebRequest = WebRequest. Создайте (sRemoteFileURL) запрос. Прокси = Ничто

Это - ошибка.

-3
ответ дан 31 October 2019 в 13:18

Другие вопросы по тегам:

Похожие вопросы: