uso usando script saber que para estoy direccion detectar configurar configuracion comprobar como bloqueada automaticamente c# networking proxy

usando - C#auto detectar configuraciones de proxy



detectar proxy (7)

Consulte la clase System.Net.Configuration.ProxyElement. Eso puede tener información que estás buscando.

Lo que describes funciona, también puedes consultar el registro.

Aquí hay un script de Powershell que escribí para verificar el proxy:

function get-proxy { $path = "HKCU:/Software/Microsoft/Windows/CurrentVersion/Internet Settings" $reg = get-itemproperty $path return $reg }

C # 2008 SP1

Estoy usando el código para detectar si se ha configurado un proxy 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; }

====== Edición de código ======

[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; }


En primer lugar, GetDefaultProxy está marcado como obsoleto, por lo que no tiene garantía de que existirá en el futuro inmediato. En segundo lugar, la Address puede ser nula, por lo que el código que proporcionó corre el riesgo de una NullReferenceException:


Estableciendo mi proxy de solicitud en WebRequest.GetSystemWebProxy() resolvió el problema.

WebProxy.GetDefaultProxy() es la forma real, pero ahora está en desuso.


Parece que WebRequest.DefaultWebProxy es el reemplazo oficial de WebProxy.GetDefaultProxy.

Debería poder incluirlo en su código original con solo una pequeña modificación. Algo como:

WebProxy proxy = (WebProxy) WebRequest.DefaultWebProxy; if (proxy.Address.AbsoluteUri != string.Empty) { Console.WriteLine("Proxy URL: " + proxy.Address.AbsoluteUri); wc.Proxy = proxy; }


Pruebe lo siguiente:

public string GetMeMyInfo(string searchCriteria) { // Instatiate the web service and declare the necessary variables WsService.WsServiceBus oWsGetInfo = new WsService.WsServiceBus(); // Configure the Web Service Proxy oWsGetInfo.Proxy = System.Net.WebProxy.GetDefaultProxy(); oWsGetInfo.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; // Invoke the web service return oWsGetInfo.GetInfo4Me(searchCriteria); }

Eso obtendrá la configuración de proxy predeterminada y las credenciales antes de invocar su servicio web, por ejemplo.


WebClient etc. usa la configuración de WinHTTP (no la configuración de IE), así que lo más fácil es configurar WinHTTP. En XP, etc., puede usar:

proxycfg -u

para importar la configuración actual de IE en la tienda WinHTTP. Después de eso, WebClient , etc. debería poder usar la misma configuración sin problemas. En Vista y Windows 7 esto ahora se encuentra en:

netsh winhttp import proxy ie

Necesita ejecutar esto como administrador.


<system.net> <defaultProxy enabled="false" useDefaultCredentials="false"> <proxy/> <bypasslist/> <module/> </defaultProxy>

Use este fragmento en el archivo application.config.