c# - Obtener el URI del proxy web predeterminado
wcf .net-3.5 (1)
El proxy tiene un método llamado GetProxy que se puede usar para obtener el Uri del proxy.
Aquí hay un fragmento de la descripción de MSDN:
El método GetProxy devuelve el URI que utiliza la instancia de WebRequest para acceder al recurso de Internet.
GetProxy compara el destino con los contenidos de BypassList, utilizando el método IsBypassed. Si IsBypassed devuelve verdadero, GetProxy devuelve el destino y la instancia de WebRequest no utiliza el servidor proxy.
Si el destino no está en BypassList, la instancia de WebRequest usa el servidor proxy y se devuelve la propiedad Dirección.
Puede usar el siguiente código para obtener los detalles del proxy. Tenga en cuenta que el URI que pase al método GetProxy es importante, ya que solo le devolverá las credenciales del proxy si el proxy no se pasa por alto para el Uri especificado.
var proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
//gets the proxy uri, will only work if the request needs to go via the proxy
//(i.e. the requested url isn''t in the bypass list, etc)
Uri proxyUri = proxy.GetProxy(new Uri("http://www.google.com"));
proxyUri.Host.Dump(); // 10.1.100.112
proxyUri.AbsoluteUri.Dump(); // http://10.1.100.112:8080/
Estoy escribiendo un programa que debería funcionar sin proxy y con proxy con autenticación, ¡automáticamente! Debería llamar a un servicio WCF. En este ejemplo, la instancia se llama client
. También uso una clase auto escrita ( proxyHelper
) que solicita las credenciales.
BasicHttpBinding connection = client.Endpoint.Binding as BasicHttpBinding;<br/>
connection.ProxyAddress = _???_<br/>
connection.UseDefaultWebProxy = false;<br/>
connection.BypassProxyOnLocal = false;<br/>
connection.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;<br/>
client.ClientCredentials.UserName.UserName = proxyHelper.Username;
client.ClientCredentials.UserName.Password = proxyHelper.Password;
Me enfrenta un problema al obtener la ProxyAddress. Si uso HttpWebRequest.GetSystemWebProxy()
para obtener un proxy definido real, veo en el modo de depuración la dirección proxy correcta , pero no es una propiedad pública. Establecer UseDefaultWebProxy como verdadero no funciona y si agrego la dirección del proxy codificada y establezco UseDefaultWebProxy como falso, funciona bien. Entonces ... ¿cómo puedo recopilar la dirección del proxy web predeterminado?