Мне нужно подключиться к какой-либо общедоступной службе wcf, но между мной и сервисом есть некоторый прокси. Если я использую настройки прокси-сервера по умолчанию, такие как
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
или
HttpWebRequest.DefaultWebProxy
он отлично работает но мне не нужно устанавливать настройки прокси для всего приложения, поэтому я должен установить его для определенного соединения. Итак, как я могу это сделать?
Я видел свойство ProxyAddress
(client.Endpoint.Binding as BasicHttpBinding).ProxyAddress
но нет никаких свойств для учетных данных... Я думал, как-то изменить HttpWebRequest, но я не знаю, как его получить...
решаемые
Спасибо всем за ваши ответы.
Ответ AntonK подходит для решения моей проблемы.
В то время, когда этот вопрос был актуальным, я решил его таким же образом, но без использования web.config и написал этот метод
void SetProxySettings<TChannel>(ClientBase<TChannel> client,
bool useProxy, string address, int port, string login, string password)
where TChannel : class
{
if (!useProxy) return;
var b = client.Endpoint.Binding as BasicHttpBinding;
if (b == null)
{
System.Diagnostics.Debug.WriteLine("Binding of this endpoint is not BasicHttpBinding");
return;
}
b.ProxyAddress = new Uri(string.Format("http://{0}:{1}", address, port));
b.UseDefaultWebProxy = false; // !!!
b.Security.Mode = BasicHttpSecurityMode.Transport;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; // !!!
b.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; // !!!
if (client.ClientCredentials == null) return;
client.ClientCredentials.UserName.UserName = login;
client.ClientCredentials.UserName.Password = password;
}