Подключиться к службе WCF (.svc) через прокси (с именем пользователя / паролем) - PullRequest
2 голосов
/ 17 июня 2011

Я создал сервис WCF. Я называю это так:

ServiceClient client = new ServiceClient ();
client.MyMethod();

Пока все хорошо на моей машине.

Теперь я развернул его в нашей демилитаризованной зоне (что бы это ни было), и я могу позвонить по внешнему URL-адресу (поэтому запрос с моего компьютера отправляется в Интернет, а затем отправляется в наш центр обработки данных).

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

Когда я не изменяю код, я получаю эту ошибку:

Удаленный сервер возвратил неожиданный ответ: (407) прокси Требуется аутентификация (ISA Сервер требует авторизации для выполнить запрос. Доступ к сети Прокси-фильтр запрещен. ).

После поиска в Google я нашел этот код, но он оставляет меня с той же ошибкой.

  var b = client.Endpoint.Binding as System.ServiceModel.WSHttpBinding;
            b.ProxyAddress = new Uri("http://OURADDRESS.intern:8080");     
            b.BypassProxyOnLocal = false;     
            b.UseDefaultWebProxy = false;
            client.ClientCredentials.UserName.UserName = @"DOMAIN\USERNAME";
            client.ClientCredentials.UserName.Password = "myverysecretpassword";

1 Ответ

5 голосов
/ 17 июня 2011

В таком случае использования прокси по умолчанию должно быть достаточно:

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

При связывании необходимо обеспечить только использование прокси по умолчанию (должно быть включено по умолчанию):

b.UseDefaultWebProxy = true;

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

client.ClientCredentials.Windows.ClientCredential.UserName = @"DOMAIN\USERNAME";
client.ClientCredentials.Windows.ClientCredential.Password = "myverysecretpassword";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...