Как установить учетные данные прокси для конкретного клиента wcf?

Мне нужно подключиться к какой-либо общедоступной службе 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;
}

Ответ 1

Вот статья, посвященная этой проблеме.

http://blogs.msdn.com/b/stcheng/archive/2008/12/03/wcf-how-to-supply-dedicated-credentials-for-webproxy-authentication.aspx

В общем, как установить прокси для определенной службы в web.config. В конфигурации привязки установите proxyAddress = "http://myproxy: 8080" и установите useDefaultWebProxy = "false"

<bindings>
  <basicHttpBinding>
     <binding name="SubscriberFulfilmentServiceSOAP12Binding" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
      textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="false"
proxyAddress="http://myproxy:8080"
      messageEncoding="Text">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
        maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

Ответ 2

Вы можете попробовать это

HttpWebRequest request = HttpWebRequest.Create("URI") as HttpWebRequest;
var proxy = new WebProxy(HttpWebRequest.GetSystemWebProxy().GetProxy(request.RequestUri), true);
proxy.Credentials = new NetworkCredential(proxyUserName, proxyPassword, DomainName);
request.Proxy = proxy;

надеюсь, что это поможет