C# 2008 SP1C# detección automática de configuraciones proxy
Estoy usando el código para detectar si un proxy se ha configurado en "Opciones de Internet". Si hay un proxy, lo estableceré en mi webclient.
Así que solo estoy verificando si existe la dirección del proxy. Si no hay, entonces no hay un proxy para establecer en el webclient.
es esta la forma correcta de hacer esto:
Muchas gracias por cualquier consejo,
WebProxy proxy = WebProxy.GetDefaultProxy();
if (proxy.Address.ToString() != string.Empty)
{
Console.WriteLine("Proxy URL: " + proxy.Address.ToString());
wc.Proxy = proxy;
}
Código ====== ====== edición
[DllImport("wininet.dll", CharSet = CharSet.Auto)]
private extern static bool InternetGetConnectedState(ref InternetConnectionState_e lpdwFlags, int dwReserved);
[Flags]
enum InternetConnectionState_e : int
{
INTERNET_CONNECTION_MODEM = 0x1,
INTERNET_CONNECTION_LAN = 0x2,
INTERNET_CONNECTION_PROXY = 0x4,
INTERNET_RAS_INSTALLED = 0x10,
INTERNET_CONNECTION_OFFLINE = 0x20,
INTERNET_CONNECTION_CONFIGURED = 0x40
}
// Return true or false if connecting through a proxy server
public bool connectingThroughProxy()
{
InternetConnectionState_e flags = 0;
InternetGetConnectedState(ref flags, 0);
bool hasProxy = false;
if ((flags & InternetConnectionState_e.INTERNET_CONNECTION_PROXY) != 0)
{
hasProxy = true;
}
else
{
hasProxy = false;
}
return hasProxy;
}
Este es el enfoque recomendado, y lo aísla de tener que escribir muchos otros códigos. – EricLaw
He descubierto que esto me da una excepción de lanzamiento de clases ya que WebRequest.DefaultWebProxy está devolviendo un WebProxyWrapper. Desafortunadamente, en mi caso, WebProxyWrapper no me da acceso al objeto WebProxy subyacente, lo cual es frustrante, ya que parece que el código que estoy tratando de depurar no aplica el proxy en el entorno activo, pero lo está haciendo en el entorno de desarrollo. – Dan
Tengo el mismo problema. Logré obtener el URI del proxy web en su lugar usando: ** Uri uriProxy = WebRequest.DefaultWebProxy.GetProxy (Uri nuevo ("http: // someserver.com")); ** – Libor