A veces recibo el siguiente error mientras hacía 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 conexión porque la máquina de destino lo 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, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception & excepcion) --- Fin del rastro interno de la pila de excepciones --- 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();
Respuestas:
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 sucede ocasionalmente (usó la palabra "a veces") y el reintento se realiza correctamente, es probable que el servidor tenga un "retraso" completo.
Cuando espera ser
accept
editado en un enchufe de escucha, se le coloca en una cartera de pedidos. Esta cartera de pedidos es finita y bastante corta (los valores de 1, 2 o 3 no son inusuales) y, por lo tanto, el sistema operativo no puede poner en cola su solicitud para que la 'aceptar' consuma.El backlog es un parámetro en la
listen
función: todos los lenguajes y plataformas tienen básicamente la misma API a este respecto, incluso el C # one . Este parámetro a menudo es configurable si controla el servidor, y es probable que se lea de algún archivo de configuración o del 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 subproceso de trabajo separado para que su aceptación esté siempre lista para recibir conexiones. Hay varias opciones de arquitectura que puede explorar para mitigar la cola de clientes y procesarlos secuencialmente.
Independientemente de si puede aumentar el trabajo atrasado 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 trabajo atrasado prolongado, el servidor podría estar recibiendo muchas otras solicitudes en ese puerto en ese momento.
Existe una rara posibilidad de que un enrutador NAT dé este error si se agotan sus puertos para las asignaciones. Sin embargo, creo que podemos descartar esta posibilidad como una posibilidad remota, ya que el enrutador tiene 64K conexiones simultáneas a la misma dirección / puerto de destino antes del agotamiento.
fuente
La razón más probable es un cortafuegos.
Este artículo contiene una serie de razones que pueden serle útiles.
Del artículo, las posibles razones podrían ser:
fuente
Esto me sucedió a mí también. A veces, cuando abro mi proyecto, aparece este error que era frustrante. El problema era que a veces el número de puerto del servicio web estaba cambiando inesperadamente.
Este problema generalmente 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 arrojó ese error.
Resolví esto siguiendo los pasos a continuación: (Visual Studio 2010)
Espero que esto resuelva el problema.
Salud :)
fuente
LocalHost:2532
. Resulta que fue establecido de esa manera por el propietario anterior en el área que especificó. Ahora que ese misterio es claro, hace que otras cosas sean menos misteriosas. ¡Gracias!Creo que debe verificar la configuración de su proxy en "opciones de Internet". Si está utilizando aplicaciones proxy / 'hide ip', este problema puede ocurrir.
fuente
Yo tuve el mismo problema. El problema es que no inicié el servidor de selenio. He descargado el servidor de selenio y lo inicié. Después de iniciar el servidor de selenio, el problema desapareció y todo funcionó bien.
Consulte esto: http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html
fuente
Vaya a su proyecto WCF - propiedades -> -> depuradores -> desmarque la casilla de verificación
fuente
Tuve el mismo error con mi servicio WCF usando el enlace Net TCP, pero resolví después de iniciar los siguientes servicios en mi caso.
Net.Pipe.Listener.Adapter
Net.TCP.Listener.Adapter
Servicio de uso compartido de puertos Net.Tcp
fuente
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.
fuente
Enfrenté 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 IP pública para comunicarse con el servidor, necesita una dirección IP pública solo en caso de que el Servidor y el Cliente se ejecuten en una máquina separada, use la dirección IP local en el programa cliente para conectarse con el servidor La dirección IP local se puede encontrar usando este método.
fuente
Recibí este error en una aplicación que usa AppFabric. La pista estaba obteniendo un
DataCacheException
rastro en la pila. Para ver si este es el problema, ejecute el siguiente comando de PowerShell:Si alguno de estos dos servicios se detiene, obtendrá este error.
fuente
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
"Program Files/MySQL/MySQL Server 5.6"
carpetaPara solucionarlo, tuve que volver a ejecutar el instalador MySQL, instalar solo el servidor y copiar una versión reciente del archivo my.ini
"ProgramData/MySQL/MySQL Server 5.6"
, nombradomy_2014-03-28T15-51-20.ini
en mi caso (no sé cómo ni por qué se copió allí tan recientemente) de vuelta 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 además 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 haya encontrado esto.
fuente
Para referencia de servicio dentro de una solución.
Reinicia tu estación de trabajo
Reconstruye tu solución
En este punto, recibí un mensaje (Windows 7) para permitir el acceso al sistema. Luego, la referencia de servicio se actualizó correctamente sin errores.
fuente
Me gustaría compartir esta respuesta que encontré porque la causa del problema no era el firewall o el proceso no escuchaba correctamente, era la muestra de código proporcionada 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 recibí 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 socket está conectado, pero no bajo la dirección IP correcta realmente necesaria para una comunicación adecuada. (Proporcionado por Microsoft)
Reescribí el código para usar la primera IP válida que encuentra. Solo me preocupa que IPV4 use esto, pero funciona con localhost, 127.0.0.1, y la dirección IP de su tarjeta de red, ¡donde el ejemplo proporcionado por Microsoft falló!
fuente
En mi caso, algunos dominios funcionaron, mientras que otros no. Agregar una referencia a la URL proxy de mi organización en mi web.config solucionó el problema.
fuente
Recibí este error de los servicios de referencia ubicados en un WCFHost de mi nivel web. Lo que funcionó para mí puede no aplicarse a todos, pero dejo esta respuesta para aquellos a los que puede. 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.
fuente
En mi escenario, tengo dos aplicaciones:
fuente
Una posibilidad más:
Asegúrese de que está intentando abrir la misma dirección IP donde está escuchando. La aplicación de mi servidor estaba escuchando la dirección IP de la máquina host usando IPv6, pero el cliente intentaba conectarse en la dirección IPv4 de la máquina host.
fuente
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é en publicar esto en caso de que pueda ayudar a alguien.
fuente
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.
comentó 1 socket de línea = mysql
Si coloca sus archivos / data / old en la ubicación adecuada, WampServer los aceptará 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 tan fáciles.
fuente
Tuve este problema a menudo. Encontré que el
SQL Server Agent
servicio no se estaba ejecutando. Una vez que comencé el servicio manualmente, se solucionó. Verifique si el servicio se está ejecutando o no:services.msc
y presione enterSQL 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 haga clic en elStart
botón. Espero que ayude a alguien.fuente
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. Usé 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.
fuente
Fue un problema tonto por mi parte, había agregado un proxy predeterminado a mi web.config para interceptar el tráfico en Fiddler, ¡y luego olvidé eliminarlo!
fuente
Hay 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.
fuente
Me enfrentaba a este problema hoy. La mía fue Asp.Net Core API y se usa
Postgresql
como base de datos. Hemos configurado esta base de datos como un contenedor Docker. Entonces, el primer paso que hice fue verificar si puedo acceder a la base de datos o no. Para hacer eso busquéPgAdmin
al principio ya que configuré lo mismo. Al hacer clic en la aplicación resultante, se lo redireccionará a http://127.0.0.1:23722/browser/ . Allí puede intentar acceder a su base de datos en el menú de la izquierda. Para mí recibí un error como en la imagen de abajo.Ingrese la contraseña e intente si puede acceder a ella o no. Para mí no estaba funcionando. Como es un contenedor Docker, decidí reiniciar mi escritorio Docker, para hacer eso, haga clic derecho en el icono de Docker en la barra de tareas y haga clic en reiniciar.
Una vez después de reiniciar el Docker, pude iniciar sesión y ver la base de datos y también el error desapareció cuando reinicio la aplicación en Visual Studio .
Espero eso ayude.
fuente
puede deberse a problemas de autorización; Ese fue el caso para mí. Si tiene, por ejemplo:
[Authorize("WriteAccess")]
o[Authorize("ReadAccess")]
en la parte superior de las funciones de su controlador, intente comentarlas.fuente
Para mí, quería comenzar el mongo en shell (irrelevante para el contexto exacto de la pregunta, pero tener el mismo mensaje de error incluso antes de comenzar el mongo en shell)
El proceso 'Servicio MongoDB' no se estaba ejecutando en Servicios
Inicie cmd como administrador y escriba,
Solo para ver que MongoDB está en funcionamiento, solo escriba mongo, en cmd le dará los detalles de la versión de Mongo y la URL de conexión de Mongo
fuente
Acabo de enfrentar esto ahora ...
Aquí, por mi parte, tengo 2 soluciones de Visual Studio separadas (.sln) ... abiertas cada una en su propia instancia de Visual Studio.
La solución 2 llama al código de la solución 1. El problema estaba relacionado con el puerto asignado a la Solución 1. Tuve que cambiar el puerto de la solución 1 a otro y luego la Solución 2 comenzó a funcionar nuevamente. Así que asegúrese de verificar el puerto asignado a su proyecto.
fuente