Подключение к WCF сервису через прокси

99
14 марта 2021, 09:00

Пытаюсь выполнить подключение к WCF сервису через прокси. На прокси настроена авторизация по логину-паролю.

Следующий код приводит к ошибке:

var proxyHost = "http://127.0.0.1:3128/";
var proxyUserName = "username";
var proxyUserPassword = "userpassword";
var apiConnectAddress = "https://remoteaddress/service.svc";
var binding = new BasicHttpBinding
{
    UseDefaultWebProxy = false,
    ProxyAddress = new Uri(proxyHost)
    Security =
    {
        Mode = BasicHttpSecurityMode.Transport,
        Transport = 
        {
            ClientCredentialType = HttpClientCredentialType.Basic,
            ProxyCredentialType = HttpProxyCredentialType.Basic
        }
    }
};
var client = new Client(binding, new EndpointAddress(apiConnectAddress));
client.ClientCredentials.UserName.UserName = proxyUserName;
client.ClientCredentials.UserName.Password = proxyUserPassword;
client.SomeMethod(...); // здесь возникает исключение
class Client : System.ServiceModel.ClientBase<T> { ... }

Информация об исключении:

System.ServiceModel.ProtocolException
    HResult=0x80131500
    Message=The remote server returned an unexpected response: (407) Proxy 
    Authentication Required.
    Source=System.Private.ServiceModel
    StackTrace:
        at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
        at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
        at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
        at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.<>c__DisplayClass1_0.<CreateGenericTask>b__0(IAsyncResult asyncResult)
        at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
        at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
        at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()

Насколько я понимаю, проблема заключается в том, что прокси-серверу не передаются логин и пароль, установленные для клиента. Как выполнить настройку HttpBinding, чтобы успешно подключиться к сервису через прокси?

READ ALSO
Создание сложного заголовка в C# WPF DataGrid

Создание сложного заголовка в C# WPF DataGrid

Необходимо создать таблицу, которая будет иметь следующую шапку, желательно использовать MVVM

102
Перехват исключений в службе Windows

Перехват исключений в службе Windows

Есть служба Windows, которая является хостом для WCF-службыПри инициализации службы Windows подписываюсь на событие

110
Как создать WebHook MVC страницу?

Как создать WebHook MVC страницу?

Мне необходимо приложение "WinForm" для переписки в viber"Webhook" планируется для получения данных(событий) из viber, далее полученные данные будут использоваться...

87