Подтвердить что ты не робот

Можно ли указать учетные данные прокси в вашем web.config?

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

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

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

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

4b9b3361

Ответ 1

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

Создайте сборку под названием 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, что намного проще.

Ответ 2

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

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

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

Ответ 3

Вы можете указать учетные данные, добавив новый общий учетный ключ вашего прокси-сервера в диспетчере учетных данных Windows:

1 В Web.config

<system.net>    
<defaultProxy enabled="true" useDefaultCredentials="true">      
<proxy usesystemdefault="True" />      
</defaultProxy>    
</system.net>
  1. В Credential Manager → Добавить общий учет

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

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

Ответ 4

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