Aucune connexion n’a pu être établie car la machine cible l’a activement refusée?

Parfois, j’obtiens l’erreur suivante pendant que je faisais HttpWebRequest à un WebService. J’ai aussi copié mon code ci-dessous.


 System.Net.WebException: Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: aucune connexion n'a pu être établie car l'ordinateur cible l'a refusé activement 127.0.0.1:80
    at System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress)
    sur System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP)
    at System.Net.ServicePoint.ConnectSocketInternal (booléen connectFailure, Socket s4, Socket s6, socket et socket, adresse IP et adresse, état ConnectSocketState, asyncResult IAsyncResult, délai d'expiration Int32, exception et exception)
    --- Fin de trace de stack d'exception interne ---
    sur 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("&"); ssortingng parName = parList.Subssortingng(0, index02); ssortingng parValue = parList.Subssortingng(index02 + 1, index01 - index02 - 1); reqWriter.Write("{0}={1}", HttpUtility.UrlEncode(parName), HttpUtility.UrlEncode(parValue)); if (index01 == parList.Length) break; reqWriter.Write("&"); parList = parList.Subssortingng(index01 + 1); } } } else { request.ContentLength = 0; } response = (HttpWebResponse)request.GetResponse(); 

Si cela se produit toujours, cela signifie littéralement que la machine existe mais qu’elle n’a aucun service écoutant sur le port spécifié, ou qu’un pare-feu vous arrête.

Si cela se produit de temps en temps – vous avez utilisé le mot “parfois” – et que la nouvelle tentative réussit, cela est probablement dû au fait que le serveur dispose d’un “backlog” complet.

Lorsque vous attendez d’être accept sur un socket, vous êtes en attente. Ce backlog est fini et assez court – les valeurs de 1, 2 ou 3 ne sont pas inhabituelles – et le système d’exploitation peut ne pas être en mesure de mettre en attente votre demande d’acceptation.

Le backlog est un paramètre de la fonction listen – tous les langages et toutes les plates-formes ont fondamentalement la même API à cet égard, même le C # . Ce paramètre est souvent configurable si vous contrôlez le serveur et qu’il est probablement lu à partir d’un fichier de parameters ou du registre. Recherchez comment configurer votre serveur.

Si vous avez écrit le serveur, il se peut que le traitement de l’acceptation de votre socket soit lourd et que cela puisse être mieux déplacé vers un thread de travail distinct afin que votre acceptation soit toujours prête à recevoir des connexions. Il existe différents choix d’architecture que vous pouvez explorer pour limiter la mise en file d’attente des clients et leur traitement séquentiel.

Indépendamment du fait que vous puissiez ou non augmenter le backlog du serveur, vous avez besoin de réessayer la logique dans votre code client pour résoudre ce problème – car même avec un long retard de traitement, le serveur peut recevoir beaucoup d’autres demandes sur ce port.

Il existe une possibilité rare où un routeur NAT aurait cette erreur si ses ports étaient épuisés. Je pense que nous pouvons écarter cette possibilité trop longtemps, car le routeur dispose de connexions simultanées de 64 Ko à la même adresse / port de destination avant l’épuisement.

La raison la plus possible est un pare-feu.

Cet article contient une série de raisons. Cela peut vous être utile.

De l’article, les raisons possibles pourraient être:

  • Paramètres du serveur FTP
  • Paramètres du logiciel / pare-feu personnel
  • Logiciels multiples / pare-feu personnels
  • Logiciel antivirus
  • Couche LSP
  • Firmware du routeur
  • Ordinateur éteint
  • Ordinateur non branché

Cela m’est arrivé aussi. Parfois, quand j’ouvre mon projet, cette erreur s’est révélée frustrante. Le problème était que le numéro de port du service Web changeait parfois de manière inattendue.

Ce problème se produit généralement lorsque vous avez plus d’une copie du projet

Mon projet appelait le service Web avec un numéro de port spécifique que j’ai atsortingbué dans le fichier Web.Config de mon fichier de projet principal. Comme le numéro de port a changé de manière inattendue, le navigateur n’a pas pu trouver le service Web et générer cette erreur.

J’ai résolu ce problème en suivant les étapes ci-dessous: (Visual Studio 2010)

Accédez à Propriétés du projet de Web service -> cliquez sur l’onglet Web -> dans la section Serveurs -> Vérifiez le port spécifique , puis atsortingbuez le standard port number par lequel votre projet principal appelle le service Web.

J’espère que cela va résoudre le problème.

À votre santé 🙂

Je pense que vous devez vérifier vos parameters de proxy dans “Options Internet”. Si vous utilisez des applications proxy / “masquer ip”, ce problème peut se produire.

J’ai eu le même problème. Le problème est que je n’ai pas démarré le serveur de selenium. J’ai téléchargé le serveur de selenium et je l’ai lancé. Après le démarrage du serveur de selenium, le problème a disparu et tout a bien fonctionné.

Référer ceci: http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html

Ceci est vraiment spécifique, mais si vous recevez cette erreur après avoir essayé de vous connecter à une firebase database à l’aide de mongo, ce qui a fonctionné pour moi était d’exécuter mongod.exe avant d’exécuter mongo.exe. J’espère que cela aide quelqu’un.

J’ai cette erreur dans une application qui utilise AppFabric. La clé était d’obtenir une DataCacheException [1] dans la trace de la stack. Pour voir si c’est le problème pour vous, exécutez la commande PowerShell suivante:

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

Si l’un de ces deux services est arrêté, vous obtiendrez cette erreur.

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

Eh bien, j’ai reçu cette erreur aujourd’hui sur Windows 8 64 bits pour la première fois, et il s’avère que my.ini a été réinitialisé, et que le fichier bin / mysqld a été supprimé, entre autres. dans le "Program Files/MySQL/MySQL Server 5.6" .

Pour y remédier, je devais relancer le programme d’installation de MySQL, installer uniquement le serveur et copier une version récente du fichier my.ini à partir de "ProgramData/MySQL/MySQL Server 5.6" , nommé my_2014-03-28T15-51-20.ini dans mon cas (je ne sais pas comment ou pourquoi cela a été copié récemment) dans "Program Files/MySQL/MySQL Server 5.6" .

Le seul changement apporté au système depuis le fonctionnement de MySQL a été l’installation de Traktor 2 et d’une carte son Traktor Audio 2 de Native Instruments, ce qui n’aurait vraiment pas dû poser problème. Si quelqu’un a un indice, il serait gentil de commenter pour empêcher cela pour moi et toute personne qui a rencontré cela.

J’ai eu la même erreur avec mon service WCF en utilisant la liaison Net TCP, mais résolu après avoir démarré les services ci-dessous dans mon cas.

Net.Pipe.Listener.Adapter

Net.TCP.Listener.Adapter

Service de partage de port Net.Tcp

Je voudrais partager cette réponse que j’ai trouvée car la cause du problème n’était pas le pare-feu ou le processus n’écoutant pas correctement, c’était l’exemple de code fourni par Microsoft que j’ai utilisé.

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

J’ai implémenté cette fonction presque exactement comme écrit, mais ce qui s’est passé, c’est que j’ai cette erreur:

2016-01-05 12: 00: 48,075 [10] ERREUR – L’erreur est: System.Net.Sockets.SocketException (0x80004005): Aucune connexion n’a pu être établie car l’ordinateur cible l’a refusé activement [fe80 :: caa: 745: a1da: e6f1% 11]: 4080

Ce code dirait que le socket est connecté, mais pas sous la bonne adresse IP réellement nécessaire pour une communication correcte. (Fourni par Microsoft)

 private static Socket ConnectSocket(ssortingng 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; } 

J’ai réécrit le code pour utiliser simplement la première adresse IP valide trouvée. Je ne m’intéresse qu’à IPV4 qui l’utilise, mais cela fonctionne avec localhost, 127.0.0.1 et l’adresse IP réelle de votre carte réseau, où l’exemple fourni par Microsoft a échoué!

  private Socket ConnectSocket(ssortingng 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).ToSsortingng() + " on port " + port.ToSsortingng()); 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.ToSsortingng()); Platform.Log(LogLevel.Error, "The error is: " + e.ToSsortingng()); if (g_NoOutputForThreading == false) rtbResponse.AppendText("Error creating socket connection to " + server + " on port " + port.ToSsortingng()); return null; } } 

Dans mon cas, certains domaines fonctionnaient, d’autres pas. L’ajout d’une référence à l’adresse URL du proxy de mon organisation dans mon fichier web.config a résolu le problème.

      

J’ai été confronté à la même erreur car lorsque le serveur et le client exécutent sur le même ordinateur une adresse IP locale du serveur et non une adresse IP publique pour communiquer avec le serveur dont vous avez besoin. Adresse IP publique uniquement dans le programme client pour se connecter au serveur L’adresse IP locale peut être trouvée en utilisant cette méthode.

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

Accédez à votre projet WCF – propriétés -> Web -> débogueurs -> décocher la case

Activer Modifier et Continuer

Pour référence de service dans une solution.

  1. Redémarrez votre poste de travail

  2. Reconstruisez votre solution

  3. Mettre à jour la référence de service dans le projet WCFclient

À ce stade, j’ai reçu un message (Windows 7) pour autoriser l’access au système. Ensuite, la référence de service a été correctement mise à jour sans erreurs.

Une autre possibilité –

Assurez-vous que vous essayez d’ouvrir la même adresse IP que celle que vous écoutez. Mon application serveur écoutait l’adresse IP de la machine hôte à l’aide d’IPv6, mais le client tentait de se connecter à l’adresse IPv4 de la machine hôte.

J’ai reçu cette erreur lors du référencement de services situés sur un WCFHost depuis mon niveau Web. Ce qui a fonctionné pour moi peut ne pas s’appliquer à tout le monde, mais je laisse cette réponse à ceux que cela pourrait être. Le numéro de port de mon WCFHost a été mis à jour de manière aléatoire par IIS, je devais simplement mettre à jour les routes de fin vers les références svc dans ma configuration Web. Problème résolu.

En utilisant WampServer 64bit sur Windows 7 Édition Familiale Premium 64 bits, j’ai rencontré ce problème exact. Après des heures et des heures d’expérimentation, il est apparu que tout ce qui était nécessaire était dans my.ini pour commenter une ligne. Alors ça a bien marché.

commenté 1 ligne socket = mysql

Si vous mettez vos anciens fichiers / data / à l’emplacement approprié, WampServer les acceptera tous sauf pour le dossier / mysql / qu’il écrit. J’ai donc simplement importé une sauvegarde des données / mysql / user de mon environnement de développement précédent et j’ai lancé FLUSH PRIVILEGES dans une fenêtre phpMyAdmin SQL. Fonctionne très bien. Quelque chose ne va pas parce que les choses ne devraient pas être aussi faciles.

Dans mon scénario, j’ai deux applications:

  • App1
  • App2

Hypothèse : App1 devrait écouter les activités de App2 sur le port 5000

Erreur : démarrage de App1 et tentative d’écoute, dans une ville fantôme inexistante, génère l’erreur

Solution : démarrez d’abord App2, puis essayez d’écouter avec App1

J’ai souvent eu ce problème. J’ai trouvé que le service SQL Server Agent n’était pas en cours d’exécution. Une fois que j’ai démarré le service manuellement, il a été corrigé. Vérifiez si le service est en cours d’exécution ou non:

  1. Exécuter l’invite, tapez services.msc et appuyez sur Entrée
  2. Rechercher le nom du service – SQL Server Agent ( nom de l’instance )

Si SQL Server Agent n’est pas en cours d’exécution, double-cliquez sur le service pour ouvrir la fenêtre de propriétés. Cliquez ensuite sur le bouton Start . J’espère que ça va aider quelqu’un.

Je suis tombé sur cette erreur et j’ai mis du temps à le résoudre. Dans mon cas, j’avais https et net.tcp configurés en tant que liaisons IIS sur le même port. Évidemment, vous ne pouvez pas avoir deux choses sur le même port. J’ai utilisé la commande netstat -ap tcp pour vérifier si quelque chose écoutait sur ce port. Il n’y avait pas d’écoute. Supprimer la liaison inutile (https dans mon cas) a résolu mon problème.

C’était un problème stupide de ma part, j’avais ajouté un defaultproxy à mon web.config afin d’intercepter le trafic dans Fiddler, puis j’ai oublié de le supprimer!

Il existe un service appelé “SQL Server Browser” qui fournit des informations de connexion SQL Server aux clients.

Dans mon cas, aucune des solutions existantes ne fonctionnait car ce service n’était pas en cours d’exécution. Je l’ai repris et tout est revenu au travail parfaitement.

Dans mon cas, cela a été causé par un déploiement défectueux où aucun paramètre n’a été défini dans mon fichier web.config.

Un collègue a expliqué que l’adresse IP dans le message d’erreur représente l’hôte local.

Lorsque j’ai corrigé le fichier web.config, j’utilisais alors l’URL correcte pour faire les appels du serveur et cela fonctionnait.

Je pensais que je posterais ceci au cas où cela pourrait aider quelqu’un.