Можно ли указать учетные данные прокси в вашем файле web.config? - PullRequest
58 голосов
/ 09 октября 2008

Мне нужно настроить веб-сайт для доступа к веб-сервису на другом компьютере через прокси. Я могу настроить веб-сайт для использования прокси-сервера, но не могу найти способ указать учетные данные, которые необходимы прокси-серверу, возможно ли это? Вот моя текущая конфигурация:

<defaultProxy useDefaultCredentials="false">
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" />
</defaultProxy>

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

Есть ли способ сделать это? MSDN мне не очень помогает ..

Ответы [ 4 ]

100 голосов
/ 11 октября 2008

Да, можно указать свои собственные учетные данные без изменения текущего кода. Это требует небольшой кусок кода с вашей стороны, хотя.

Создайте сборку с именем SomeAssembly.dll с этим классом:

namespace SomeNameSpace
{
    public class MyProxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential("user", "password"); }
            //or get { return new NetworkCredential("user", "password","domain"); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("http://my.proxy:8080");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

Добавьте это в ваш конфигурационный файл:

<defaultProxy enabled="true" useDefaultCredentials="false">
  <module type = "SomeNameSpace.MyProxy, SomeAssembly" />
</defaultProxy>

Это «внедряет» новый прокси в список, и поскольку учетные данные по умолчанию отсутствуют, класс WebRequest сначала вызовет ваш код и запросит ваши собственные учетные данные. Вам нужно будет поместить сборку SomeAssembly в каталог bin вашего приложения CMS.

Это некоторый статический код, и для получения всех строк, таких как пользователь, пароль и URL, вам может потребоваться реализовать собственный ConfigurationSection или добавить некоторую информацию в AppSettings , что гораздо проще.

17 голосов
/ 18 мая 2009

Хотя я не нашел хорошего способа указать учетные данные прокси-сети в файле web.config, вы можете обнаружить, что вы все еще можете использовать решение без кодирования, включив его в свой файл web.config:

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

Ключевым компонентом в этом направлении является изменение параметров IIS, обеспечивающих доступ к прокси-серверу учетной записи, которая запускает процесс. Если ваш процесс выполняется под LocalService или NetworkService, то это, вероятно, не будет работать. Скорее всего, вам понадобится учетная запись домена.

4 голосов
/ 27 июня 2015

Можно указать учетные данные, добавив новые общие учетные данные прокси-сервера в диспетчере учетных данных Windows:

1 In Web.config

<system.net>    
<defaultProxy enabled="true" useDefaultCredentials="true">      
<proxy usesystemdefault="True" />      
</defaultProxy>    
</system.net>
  1. В диспетчере учетных данных >> Добавить общие учетные данные

Интернет или сетевой адрес: ваш прокси-адрес
Имя пользователя: ваше имя пользователя
Пароль: вы передаете

Эта конфигурация у меня сработала, без изменения кода.

1 голос
/ 09 октября 2008

Службы каталогов / поиск LDAP могут использоваться для этой цели. Это предполагает некоторые изменения на уровне инфраструктуры, но большинство производственных сред имеют такое положение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...