No se pudo establecer ninguna conexión porque la máquina objective lo rechazó activamente.

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


 System.Net.WebException: no se puede conectar al servidor remoto ---> System.Net.Sockets.SocketException: no se pudo establecer ninguna conexión porque la máquina de destino la rechazó activamente 127.0.0.1:80
    en System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress)
    en System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP)
    en System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket & socket, IPAddress & address, estado de ConnectSocketState, IAsyncResult asyncResult, Int32 timeout, Exception & exception)
    --- Fin de la stack de la excepción interna trace ---
    en 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(); 

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

Si ocurre de vez en cuando – usó la palabra “a veces” – y reintentando tiene éxito, es probable porque el servidor tiene una ‘acumulación’ completa.

Cuando esperas que te accept en un socket de escucha, te colocan en un atraso. Este retraso es finito y bastante corto (los valores de 1, 2 o 3 no son inusuales) y, por lo tanto, es posible que el sistema operativo no pueda poner en cola su solicitud de ‘aceptar’ para consumir.

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

Si escribió el servidor, es posible que tenga un procesamiento pesado en la aceptación de su socket, y esto se puede mover mejor a un thread de trabajador por separado para que su aceptación siempre esté lista para recibir conexiones. Hay varias opciones de architecture que puede explorar para mitigar la cola de clientes y procesarlos secuencialmente.

Independientemente de si puede boost la acumulación de datos del servidor, es necesario volver a intentar la lógica en su código de cliente para hacer frente a este problema, ya que incluso con un retraso prolongado, el servidor podría estar recibiendo muchas otras solicitudes en ese puerto en ese momento.

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

La mayoría de las razones posibles es un Firewall.

Este artículo contiene un conjunto de razones. Puede serle útil.

Del artículo, las posibles razones podrían ser:

  • Configuración del servidor FTP
  • Configuración del software / Personal Firewall
  • Múltiples software / cortafuegos personales
  • Software antivirus
  • Capa LSP
  • Firmware del enrutador
  • Computadora apagada
  • Ordenador no enchufado

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

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

Mi proyecto llamaba 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 arrojar ese error.

Lo resolví siguiendo los pasos a continuación: (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 🙂

Creo que debes verificar tu configuración de proxy en “opciones de internet”. Si está utilizando aplicaciones proxy / ‘hide ip’, este problema puede ocurrir.

Yo tuve el mismo problema. El problema es que no inicié el servidor de selenium. He descargado el servidor de selenium y lo inicié. Después de iniciar el servidor de selenium, el problema desapareció y todo funcionó bien.

Referir esto: http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html

Esto es realmente específico, pero si recibe este error después de intentar conectarse a una base de datos usando 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.

Obtuve este error en una aplicación que usa AppFabric. La clave era obtener una DataCacheException [1] en el seguimiento de la stack. Para ver si este es el problema para usted, ejecute el siguiente comando de PowerShell:

@ (“AppFabricCachingService”, “RemoteRegistry”) | % {get-service $ _}

Si alguno de estos dos servicios se detiene, entonces obtendrá este error.

[1] http://msdn.microsoft.com/en-us/library/microsoft.applicationserver.caching.datacacheexception.aspx

Bien, he recibido este error hoy en Windows 8 de 64 bits de la nada, por primera vez, y resulta que mi my.ini se ha restablecido, y el archivo bin / mysqld se ha eliminado, entre otros elementos en la carpeta "Program Files/MySQL/MySQL Server 5.6" .

Para arreglarlo, tuve que volver a ejecutar el instalador 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) de nuevo 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, lo que realmente no debería haber causado este problema, y ​​nadie más ha usado el sistema fuera de mí. Si alguien tiene una pista, sería amable de su parte comentar para evitar esto para mí y para cualquier otra persona que se haya encontrado con esto.

Tuve el mismo error con mi servicio WCF utilizando el enlace Net TCP, pero se resolvió después de iniciar los servicios a continuación en mi caso.

Net.Pipe.Listener.Adapter

Net.TCP.Listener.Adapter

Servicio de uso compartido de puertos Net.Tcp

Me gustaría compartir esta respuesta que encontré porque la causa del problema no era el cortafuegos o el proceso de no escuchar correctamente, sino el ejemplo de código proporcionado por Microsoft que utilicé.

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 ninguna conexión porque la máquina de destino la rechazó activamente [fe80 :: caa: 745: a1da: e6f1% 11]: 4080

Este código diría que el socket está conectado, pero no bajo la dirección IP correcta realmente necesaria 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 encuentra. Solo me preocupa que IPV4 lo use, pero funciona con localhost, 127.0.0.1, ¡y la dirección IP de su tarjeta de red, donde falló el ejemplo proporcionado por Microsoft!

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

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

      

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

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

Vaya a su proyecto WCF – propiedades -> Web -> depuradores -> desmarcar la checkbox

Habilitar Editar y Continuar

Para referencia de servicio dentro de una solución.

  1. Reinicie su estación de trabajo

  2. Reconstruye tu solución

  3. Actualizar la referencia del servicio en el proyecto WCFclient

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

Una posibilidad más

Asegúrese de intentar abrir la misma dirección IP que la que está escuchando. Mi aplicación de servidor estaba escuchando la dirección IP de la máquina host utilizando IPv6, pero el cliente estaba intentando conectarse en la dirección IPv4 de la máquina host.

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

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 / datos / viejos en la ubicación adecuada, WampServer los aceptará a todos excepto la carpeta / mysql / que sobrescribe. Entonces, simplemente importé una copia de seguridad de los datos / mysql / user de mi entorno de desarrollo anterior y ejecuté FLUSH PRIVILEGES en una ventana phpMyAdmin SQL. Funciona genial. Algo debe estar mal porque las cosas no deberían ser así de fáciles.

En mi caso, tengo dos aplicaciones:

  • App1
  • App2

Suposición : App1 debería escuchar las actividades de App2 en el puerto 5000

Error : al iniciar App1 y al intentar escuchar, a un pueblo fantasma inexistente, se produce el error

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

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

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

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

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

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

Hay un servicio llamado “Navegador 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.

En mi caso, esto fue causado por una implementación defectuosa en la que 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 pueda ayudar a alguien.