I'm trying to connect to WCF service via proxy. Proxy has authentication by login-password.
My code is:
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.None,
ProxyCredentialType = HttpProxyCredentialType.Basic
}
}
};
var client = new Client(binding, new EndpointAddress(apiConnectAddress));
client.ClientCredentials.UserName.UserName = proxyUserName;
client.ClientCredentials.UserName.Password = proxyUserPassword;
client.SomeMethod(...); // an exception occurs here
class Client : System.ServiceModel.ClientBase<T> { ... }
Exception details:
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()
As I understand it, the exception occurs because login and password are not transmitted to the proxy server. How to configure HttpBinding to successfully connect to the service via proxy?
PS. The app written on .Net Core 2.2