.net socketexception system.net.webexception

.net - ¿No se pudo establecer conexión porque la máquina de destino la rechazó activamente?



socketexception system.net.webexception (23)

Bueno, recibí este error hoy en Windows 8 de 64 bits de la nada, por primera vez, y resultó que mi my.ini se había restablecido y el archivo bin / mysqld se había eliminado, entre otros elementos. en la carpeta "Program Files/MySQL/MySQL Server 5.6" .

Para solucionarlo, tuve que volver a ejecutar el instalador de MySQL, instalar solo el servidor y copiar una versión reciente del archivo my.ini de "ProgramData/MySQL/MySQL Server 5.6" , llamado my_2014-03-28T15-51-20.ini en mi caso (no sé cómo ni por qué se copió allí tan recientemente) nuevamente en "Program Files/MySQL/MySQL Server 5.6" .

El único cambio en el sistema desde que MySQL funcionó fue la instalación de Traktor 2 de Native Instruments y una tarjeta de sonido Traktor Audio 2, que realmente no debería haber causado este problema, y ​​nadie más ha usado el sistema aparte de mí. Si alguien tiene una pista, sería amable de tu parte comentar para evitar esto para mí y para cualquier otra persona que haya encontrado esto.

A veces me sale el siguiente error mientras estaba haciendo HttpWebRequest a un servicio web. Copié mi código a continuación también.

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:80 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) --- End of inner exception stack trace --- at System.Net.HttpWebRequest.GetRequestStream()

ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.PreAuthenticate = true; request.Credentials = networkCredential(sla); request.Method = WebRequestMethods.Http.Post; request.ContentType = "application/x-www-form-urlencoded"; request.Timeout = v_Timeout * 1000; if (url.IndexOf("asmx") > 0 && parStartIndex > 0) { AppHelper.Logger.Append("#############" + sla.ServiceName); using (StreamWriter reqWriter = new StreamWriter(request.GetRequestStream())) { while (true) { int index01 = parList.Length; int index02 = parList.IndexOf("="); if (parList.IndexOf("&") > 0) index01 = parList.IndexOf("&"); string parName = parList.Substring(0, index02); string parValue = parList.Substring(index02 + 1, index01 - index02 - 1); reqWriter.Write("{0}={1}", HttpUtility.UrlEncode(parName), HttpUtility.UrlEncode(parValue)); if (index01 == parList.Length) break; reqWriter.Write("&"); parList = parList.Substring(index01 + 1); } } } else { request.ContentLength = 0; } response = (HttpWebResponse)request.GetResponse();


Creo que necesitas verificar la configuración de tu proxy en "opciones de internet". Si está utilizando aplicaciones proxy / ''ocultar ip'', este problema puede ocurrir.


En mi caso, algunos dominios funcionaron, mientras que otros no. Agregar una referencia a la URL del proxy de mi organización en mi web.config solucionó el problema.

<system.net> <defaultProxy useDefaultCredentials="true"> <proxy proxyaddress="http://proxy.my-org.com/" usesystemdefault="True"/> </defaultProxy> </system.net>


En mi caso, esto fue causado por una implementación defectuosa donde no se realizó una configuración en mi web.config.

Un colega explicó que la dirección IP en el mensaje de error representa el host local.

Cuando corregí el web.config, estaba usando la url correcta para hacer las llamadas al servidor y funcionó.

Pensé que publicaría esto en caso de que pudiera ayudar a alguien.


En mi escenario, tengo dos aplicaciones:

  • App1
  • App2

Supuesto : App1 debería escuchar las actividades de App2 en el puerto 5000

Error : al iniciar App1 e intentar escuchar, en una ciudad fantasma inexistente, se produce el error

Solución : primero inicie App2, luego intente escuchar usando App1


Esto es realmente específico, pero si recibe este error después de intentar conectarse a una base de datos utilizando mongo, lo que funcionó para mí fue ejecutar mongod.exe antes de ejecutar mongo.exe y luego la conexión funcionó bien. Espero que esto ayude a alguien.


Esto también me sucedió a mí ... A veces, cuando abro mi proyecto, apareció este error, lo cual fue frustrante. El problema era que a veces el número de puerto del servicio web cambiaba inesperadamente.

Este problema usualmente ocurre cuando tienes más de una copia del proyecto.

Mi proyecto estaba llamando al servicio web con un número de puerto específico que asigné en el archivo Web.Config de mi archivo de proyecto principal. Como el número de puerto cambió inesperadamente, el navegador no pudo encontrar el servicio web y generó ese error.

Resolví esto siguiendo los siguientes pasos: (Visual Studio 2010)

Vaya a Propiedades del proyecto de Web service -> haga clic en la pestaña Web -> En la sección Servidores -> Verificar puerto específico y luego asigne el standard port number por el cual su proyecto principal está llamando al servicio web.

Espero que esto solucione el problema.

Saludos :)


Existe un servicio llamado "Explorador de SQL Server" que proporciona información de conexión de SQL Server a los clientes.

En mi caso, ninguna de las soluciones existentes funcionó porque este servicio no se estaba ejecutando. Lo reanudé y todo volvió a funcionar perfectamente.


Fue un problema tonto por mi parte, había añadido un proxy predeterminado a mi web.config para interceptar el tráfico en Fiddler, ¡y luego me olvidé de eliminarlo!


He recibido este error al hacer referencia a los servicios ubicados en un WCFHost de mi nivel web. Lo que funcionó para mí puede que no se aplique a todos, pero les dejo esta respuesta a quienes puedan. El número de puerto para mi WCFHost fue actualizado aleatoriamente por IIS, simplemente tuve que actualizar las rutas finales a las referencias svc en mi configuración web. Problema resuelto.


La mayor razón posible es un Firewall.

Este artículo contiene un conjunto de razones. Puede ser útil para usted.

Del artículo, las posibles razones pueden ser:

  • Configuración del servidor FTP
  • Configuración de software / firewall personal
  • Software múltiple / firewalls personales
  • Software antivirus
  • Capa LSP
  • Firmware del enrutador
  • Computadora apagada
  • Computadora no enchufada

Me encontré con el mismo error porque cuando su servidor y cliente se ejecutan en la misma máquina, el cliente necesita una dirección IP local del servidor, no una dirección de IP pública para comunicarse con el servidor, solo necesita la dirección IP pública en caso de que el Servidor y el Cliente se ejecuten en una máquina diferente. en el programa cliente para conectarse con el servidor La dirección IP local se puede encontrar usando este método.

public static string Getlocalip() { try { IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); return localIPs[7].ToString(); } catch (Exception) { return "null"; } }


Me encontré con este error y me tomó un tiempo para resolverlo. En mi caso, tuve https y net.tcp configurados como enlaces IIS en el mismo puerto. Obviamente no puedes tener dos cosas en el mismo puerto. Usé el comando netstat -ap tcp para verificar si hay algo escuchando en ese puerto. No había nadie escuchando. Eliminar un enlace innecesario (https en mi caso) solucionó mi problema.


Me gustaría compartir esta respuesta que encontré porque la causa del problema no fue que el firewall o el proceso no se escucharon correctamente, fue el ejemplo de código provisto por Microsoft el que usé.

https://msdn.microsoft.com/en-us/library/system.net.sockets.socket%28v=vs.110%29.aspx

Implementé esta función casi exactamente como está escrita, pero lo que sucedió es que obtuve este error:

2016-01-05 12: 00: 48,075 [10] ERROR - El error es: System.Net.Sockets.SocketException (0x80004005): No se pudo establecer conexión porque la máquina de destino lo rechazó activamente [fe80 :: caa: 745: a1da: e6f1% 11]: 4080

Este código diría que el zócalo está conectado, pero no con la dirección IP correcta que realmente se necesita para una comunicación adecuada. (Proporcionado por Microsoft)

private static Socket ConnectSocket(string server, int port) { Socket s = null; IPHostEntry hostEntry = null; // Get host related information. hostEntry = Dns.GetHostEntry(server); // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid // an exception that occurs when the host IP Address is not compatible with the address family // (typical in the IPv6 case). foreach(IPAddress address in hostEntry.AddressList) { IPEndPoint ipe = new IPEndPoint(address, port); Socket tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp); tempSocket.Connect(ipe); if(tempSocket.Connected) { s = tempSocket; break; } else { continue; } } return s; }

Reescribí el código para usar la primera IP válida que encuentre. Solo me preocupa que IPV4 use esto, pero funciona con localhost, 127.0.0.1, y la dirección IP real de su tarjeta de red, donde el ejemplo proporcionado por Microsoft falló.

private Socket ConnectSocket(string server, int port) { Socket s = null; try { // Get host related information. IPAddress[] ips; ips = Dns.GetHostAddresses(server); Socket tempSocket = null; IPEndPoint ipe = null; ipe = new IPEndPoint((IPAddress)ips.GetValue(0), port); tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp); Platform.Log(LogLevel.Info, "Attempting socket connection to " + ips.GetValue(0).ToString() + " on port " + port.ToString()); tempSocket.Connect(ipe); if (tempSocket.Connected) { s = tempSocket; s.SendTimeout = Coordinate.HL7SendTimeout; s.ReceiveTimeout = Coordinate.HL7ReceiveTimeout; } else { return null; } return s; } catch (Exception e) { Platform.Log(LogLevel.Error, "Error creating socket connection to " + server + " on port " + port.ToString()); Platform.Log(LogLevel.Error, "The error is: " + e.ToString()); if (g_NoOutputForThreading == false) rtbResponse.AppendText("Error creating socket connection to " + server + " on port " + port.ToString()); return null; } }


Para referencia de servicio dentro de una solución.

  1. Reinicie su estación de trabajo

  2. Reconstruye tu solución

  3. Actualización del servicio de referencia en el proyecto WCFclient.

En este punto, recibí un mensaje (Windows 7) para permitir el acceso al sistema. Entonces la referencia de servicio se actualizó correctamente sin errores.



Si esto sucede siempre, significa literalmente que la máquina existe pero que no tiene servicios escuchando en el puerto especificado, o que hay un firewall que lo detiene.

Si ocurre de vez en cuando (usó la palabra "a veces") y el reintento es exitoso, es probable que el servidor tenga un ''backlog'' completo.

Cuando está esperando a ser accept en una toma de escucha, se le coloca en un registro. Esta acumulación es finita y bastante corta: los valores de 1, 2 o 3 no son inusuales, por lo que es posible que el sistema operativo no pueda poner en cola su solicitud para que se consuma la "aceptación".

El backlog es un parámetro en la función de listen : todos los lenguajes y plataformas tienen básicamente la misma API a este respecto, incluso la C # one . Este parámetro es a menudo configurable si controla el servidor y es probable que se lea desde algún archivo de configuración o el registro. Investiga cómo configurar tu servidor.

Si escribió el servidor, es posible que tenga un gran procesamiento en la aceptación de su socket, y esto se puede mover mejor a un subproceso de trabajo separado para que su aceptación esté siempre lista para recibir conexiones. Hay varias opciones de arquitectura que puede explorar que mitigan la puesta en cola de los clientes y procesándolos secuencialmente.

Independientemente de si puede aumentar el retraso del servidor, sí necesita volver a intentar la lógica en el código de su cliente para hacer frente a este problema, ya que incluso con un largo retraso, el servidor podría recibir muchas otras solicitudes en ese puerto en ese momento.

Existe una rara posibilidad de que un enrutador NAT dé este error en caso de que se agoten sus puertos para las asignaciones. Sin embargo, creo que podemos descartar esta posibilidad como una posibilidad demasiado remota, ya que el enrutador tiene conexiones simultáneas de 64K a la misma dirección / puerto de destino antes del agotamiento.


Tuve el mismo error con mi servicio WCF utilizando el enlace Net TCP, pero lo resolví después de iniciar los siguientes servicios en mi caso.

Net.Pipe.Listener.Adapter

Net.TCP.Listener.Adapter

Servicio Net.Tcp Port Sharing


Tuve este problema sucediendo a menudo. Encontré que el servicio del SQL Server Agent no se estaba ejecutando. Una vez que empecé el servicio manualmente, se solucionó. Verifique si el servicio se está ejecutando o no:

  1. Ejecute el indicador, escriba services.msc y presione enter
  2. Encuentre el nombre del servicio - SQL Server Agent ( Nombre de instancia )

Si el SQL Server Agent no se está ejecutando, haga doble clic en el servicio para abrir la ventana de propiedades. Luego haga clic en el botón Start . Espero que ayude a alguien.


Una posibilidad más -

Asegúrate de que estás intentando abrir la misma dirección IP donde escuchas. La aplicación de mi servidor escuchaba la dirección IP de la máquina host mediante IPv6, pero el cliente intentaba conectarse a la dirección IPv4 de la máquina host.


Usando WampServer 64bit en Windows 7 Home Premium 64bit, encontré este problema exacto. Después de horas y horas de experimentación, se hizo evidente que todo lo que se necesitaba estaba en my.ini para comentar una línea. Entonces funcionó bien.

comentado 1 línea socket = mysql

Si coloca sus archivos / data / old en la ubicación apropiada, WampServer los aceptará a todos, excepto a la carpeta / mysql / que sobreescribe. Entonces simplemente importé una copia de seguridad de los datos de / mysql / user de mi entorno de desarrollo anterior y ejecuté FLUSH PRIVILEGES en una ventana de phpMyAdmin SQL. Funciona genial. Algo debe estar mal porque las cosas no deberían ser tan fáciles.


Vaya a su proyecto WCF - propiedades -> -> depuradores -> desmarcar la casilla de verificación

Habilitar Editar y Continuar