wake-up-neo.net

Es konnte keine Verbindung hergestellt werden, weil der Zielcomputer dies aktiv abgelehnt hat.

Manchmal erhalte ich die folgende Fehlermeldung, während ich HttpWebRequest für einen WebService ausführte. Ich habe auch meinen Code unten kopiert.


 System.Net.WebException: Verbindung zum Remote-Server kann nicht hergestellt werden ---> System.Net.Sockets.SocketException: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer dies aktiv abgelehnt hat. 127.0.0.1:80
 at System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) 
 bei System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP) 
 at System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket & Socket, IP-Adresse und Adresse, ConnectSocketState-Status, IAsyncResult-Status asyncResult, Int32-Timeout, Ausnahme und Ausnahme) 
 --- Ende der inneren Ausnahmestapelverfolgung ---
 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();
204
hsnkvk

Wenn dies immer geschieht, bedeutet dies buchstäblich, dass der Computer zwar vorhanden ist, jedoch keine Dienste für den angegebenen Port vorhanden sind oder dass eine Firewall Sie daran hindert.

Wenn es gelegentlich vorkommt - Sie haben das Wort "manchmal" verwendet - und das Wiederholen erfolgreich ist, liegt dies wahrscheinlich daran, dass der Server einen vollständigen "Rückstand" hat.

Wenn Sie darauf warten, auf einem abhörenden Socket accepted zu werden, werden Sie in einen Rückstand versetzt. Dieses Backlog ist begrenzt und recht kurz - Werte von 1, 2 oder 3 sind nicht ungewöhnlich - daher kann das Betriebssystem Ihre Anforderung möglicherweise nicht in die Warteschlange stellen, damit die 'Accept' -Anforderung verwendet wird.

Das Backlog ist ein Parameter der listen-Funktion - alle Sprachen und Plattformen haben in dieser Hinsicht im Wesentlichen dieselbe API, sogar die C # one . Dieser Parameter kann häufig konfiguriert werden, wenn Sie den Server steuern, und er wird wahrscheinlich aus einer Einstellungsdatei oder aus der Registrierung gelesen. Untersuchen Sie, wie Sie Ihren Server konfigurieren.

Wenn Sie den Server geschrieben haben, haben Sie möglicherweise eine starke Verarbeitung in der Annahme Ihres Sockets, und dies kann besser in einen separaten Worker-Thread verschoben werden, sodass Ihre Annahme immer bereit ist, Verbindungen zu erhalten. Es gibt verschiedene Architekturoptionen, die Sie erkunden können, um die Warteschlange von Clients zu verringern und diese nacheinander zu verarbeiten.

Unabhängig Ob Sie das Server-Backlog erhöhen können, benötigen Sie Wiederholungsversuch -Logik in Ihrem Client-Code, um dieses Problem zu lösen - da der Server selbst bei einem langen Backlog dies tun könnte zu diesem Zeitpunkt viele andere Anforderungen an diesem Port empfangen.

Es gibt eine seltene Möglichkeit, dass ein NAT -Router diesen Fehler ausgibt, wenn seine Ports für Zuordnungen erschöpft sind. Ich denke, wir können diese Möglichkeit jedoch als zu langwierig verwerfen, da der Router 64K gleichzeitige Verbindungen zu derselben Zieladresse/demselben Port hat, bevor er erschöpft ist.

164
Will

Der möglichste Grund ist eine Firewall.

Dieser Artikel enthält eine Reihe von Gründen. Es kann für Sie nützlich sein.

Aus dem Artikel können mögliche Gründe sein:

  • FTP-Server-Einstellungen
  • Software/Personal Firewall-Einstellungen
  • Mehrere Software/persönliche Firewalls
  • Antiviren Software
  • LSP-Schicht
  • Router-Firmware
  • Computer ausgeschaltet
  • Computer nicht angeschlossen

Das ist mir auch passiert. Manchmal, wenn ich mein Projekt öffne, tauchte dieser Fehler auf, was frustrierend war. Das Problem war, dass sich manchmal die Portnummer des Webdienstes unerwartet geändert hat.

Dieses Problem tritt normalerweise auf, wenn Sie mehr als eine Kopie des Projekts haben. 

Mein Projekt hat den Webdienst mit einer bestimmten Portnummer aufgerufen, die ich in der Datei Web.Config meiner Hauptprojektdatei zugewiesen habe. Da sich die Portnummer unerwartet geändert hat, konnte der Browser den Webdienst nicht finden und gab den Fehler aus.

Ich habe dieses Problem gelöst, indem Sie die folgenden Schritte ausgeführt haben: (Visual Studio 2010)

Gehen Sie zu Eigenschaften des Web service-Projekts -> Klicken Sie auf die Registerkarte Web -> In Server -> - Überprüfen Sie Bestimmter Port. und weisen Sie dann den standard port number zu, mit dem Ihr Hauptprojekt den Webdienst aufruft.

Ich hoffe, das wird das Problem lösen.

Prost :)

14
Mr_Green

Ich denke, Sie müssen Ihre Proxy-Einstellungen in "Internetoptionen" überprüfen. Wenn Sie Proxy/"Hide ip" -Anwendungen verwenden, kann dieses Problem auftreten.

6
isaeid

Ich hatte das gleiche Problem. Das Problem ist, dass ich den Selenium-Server nicht gestartet habe. Ich habe den Selenium-Server heruntergeladen und gestartet. Nachdem der Selenium-Server gestartet wurde, war das Problem verschwunden und alles funktionierte einwandfrei.

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

4
Ravichandra

Das ist sehr spezifisch, aber wenn Sie diese Fehlermeldung erhalten, nachdem Sie versucht haben, eine Verbindung zu einer Datenbank mit Mongo herzustellen, dann hat mongod.exe vor dem Ausführen von mongo.exe funktioniert. Hoffe das hilft jemandem.

3
Script Kitty

Gehen Sie zu Ihrem WCF-Projekt -properties ->  Web -> Debugger -> Markierung des Kontrollkästchens aufheben

Bearbeiten aktivieren und fortfahren

2
Rajat

Ich möchte diese Antwort weitergeben, die ich gefunden habe, da die Ursache des Problems nicht die Firewall oder der Prozess war, der nicht ordnungsgemäß überwacht wurde. Es war das von Microsoft bereitgestellte Codebeispiel, das ich verwendet habe.

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

Ich habe diese Funktion fast genau so implementiert, wie sie geschrieben wurde. Was passiert ist, ist dieser Fehler:

2016-01-05 12: 00: 48,075 [10] FEHLER - Der Fehler ist: System.Net.Sockets.SocketException (0x80004005): Es konnte keine Verbindung hergestellt werden, da der Zielcomputer dies aktiv abgelehnt hat [fe80 :: caa: 745: a1da: e6f1% 11]: 4080

Dieser Code würde bedeuten, dass der Socket angeschlossen ist, jedoch nicht unter der richtigen IP-Adresse, die für eine korrekte Kommunikation tatsächlich benötigt wird. (Bereitgestellt von 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;
    }

Ich habe den Code neu geschrieben, um nur die erste gültige IP zu verwenden, die er findet. Ich befasse mich nur mit IPV4, das dieses verwendet, aber es funktioniert mit localhost, 127.0.0.1, und der tatsächlichen IP-Adresse Ihrer Netzwerkkarte, bei der das von Microsoft bereitgestellte Beispiel fehlgeschlagen ist!

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

Ich hatte den gleichen Fehler mit meinem WCF-Dienst, der die Net TCP - Bindung verwendet, aber nach dem Starten der folgenden Dienste in meinem Fall behoben.

Net.Pipe.Listener.Adapter  

Net.TCP.Listener.Adapter  

Net.Tcp Port Sharing Service

2
Kiru

Ich bin mit demselben Fehler konfrontiert, denn wenn Server und Client auf demselben Computer ausgeführt werden, benötigt der Client eine lokale IP-Adresse des Servers und keine öffentliche IP-Adresse, um mit dem Server zu kommunizieren. Sie benötigen die öffentliche IP-Adresse nur für den Fall, dass Server und Client auf einem separaten Computer ausgeführt werden Im Client-Programm für die Verbindung mit dem Server Die lokale IP-Adresse kann mit dieser Methode gefunden werden.

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

            return "null";
        }

    }
2
user5093161

In meinem Fall funktionierten einige Domains, andere jedoch nicht. Durch Hinzufügen eines Verweises auf die Proxy-URL meiner Organisation in meiner web.config wurde das Problem behoben.

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

Nun, ich habe diese Fehlermeldung heute zum ersten Mal unter Windows 8 mit 64-Bit aus dem Nichts erhalten, und es stellte sich heraus, dass meine my.ini zurückgesetzt wurde und die bin/mysqld-Datei unter anderem gelöscht wurde im "Program Files/MySQL/MySQL Server 5.6"-Ordner.

Um das Problem zu beheben, musste ich das MySQL-Installationsprogramm erneut ausführen, nur den Server installieren und eine aktuelle Version der my.ini-Datei aus "ProgramData/MySQL/MySQL Server 5.6" kopieren, die in meinem Fall my_2014-03-28T15-51-20.ini heißt (weiß nicht, wie oder warum die Datei dort kopiert wurde kürzlich) zurück in "Program Files/MySQL/MySQL Server 5.6".

Die einzige Änderung am System, seit MySQL funktioniert hat, war die Installation von Traktor 2 und einer Traktor Audio 2-Soundkarte von Native Instruments, die dieses Problem eigentlich nicht hätten verursachen sollen. Außer mir hat niemand das System verwendet. Wenn jemand eine Ahnung hat, wäre es nett von Ihnen, einen Kommentar abzugeben, um dies für mich und alle anderen Personen zu verhindern, denen dies begegnet ist.

2
J Griffiths

Ich habe diesen Fehler in einer Anwendung erhalten, die AppFabric verwendet. Der Hinweis erhielt eine DataCacheException [1] im Stack-Trace. Führen Sie den folgenden PowerShell-Befehl aus, um festzustellen, ob dies das Problem für Sie ist:

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

Wenn einer dieser beiden Dienste gestoppt wird, wird diese Fehlermeldung angezeigt.

[1] http://msdn.Microsoft.com/de-de/library/Microsoft.applicationserver.caching.datacacheexception.aspx

2
John Zabroski

Eine weitere Möglichkeit -

Stellen Sie sicher, dass Sie versuchen, dieselbe IP-Adresse zu öffnen, an der Sie gerade hören. Meine Server-App hat die IP-Adresse des Host-Computers mit IPv6 überwacht, der Client hat jedoch versucht, eine Verbindung mit der IPv4-Adresse des Host-Computers herzustellen.

1
Steve Mol

Service Referenz in einer Lösung.

  1. Starten Sie Ihre Workstation neu

  2. Erstellen Sie Ihre Lösung neu 

  3. Aktualisieren Sie die Servicereferenz im WCFclient-Projekt

Zu diesem Zeitpunkt erhielt ich eine Nachricht (Windows 7), um den Systemzugriff zu ermöglichen. __ Die Dienstreferenz wurde dann ordnungsgemäß ohne Fehler aktualisiert.

1
Gary Kindel

Es gibt einen Dienst namens "SQL Server Browser", der den Clients SQL Server-Verbindungsinformationen zur Verfügung stellt.

In meinem Fall funktionierte keine der vorhandenen Lösungen, da dieser Dienst nicht ausgeführt wurde. Ich setzte es fort und alles funktionierte wieder einwandfrei.

0
Talha Imam

In meinem Szenario habe ich zwei Anwendungen:

  • App1 
  • App2

Annahme : App1 sollte die Aktivitäten von App2 auf Port 5000 abhören

Fehler : Wenn Sie App1 starten und versuchen, auf eine nicht vorhandene Geisterstadt zu hören, wird der Fehler ausgegeben

Lösung : Starten Sie zuerst App2 und versuchen Sie dann, App1 zu verwenden

0
usefulBee

In meinem Fall wurde dies durch eine fehlerhafte Bereitstellung verursacht, bei der keine Einstellung in meiner web.config vorgenommen wurde.

Ein Kollege erklärte, dass die IP-Adresse in der Fehlermeldung den localhost darstellt. 

Als ich die web.config korrigiert habe, benutzte ich dann die richtige URL, um die Server-Aufrufe zu machen und es funktionierte.

Ich dachte, ich würde das hier posten, falls es jemandem helfen könnte.

0
arame3333

Es war ein dummes Problem auf meiner Seite, ich hatte meiner web.config ein defaultproxy hinzugefügt, um den Verkehr in Fiddler abzufangen, und hatte dann vergessen, es zu entfernen!

0
Kik

Bei Verwendung von WampServer 64bit unter Windows 7 Home Premium 64bit bin ich auf genau dieses Problem gestoßen. Nach stundenlangem Experimentieren stellte sich heraus, dass in my.ini nur eine Zeile auskommentiert werden musste. Dann hat es gut funktioniert.

auskommentiert 1 Zeile socket = mysql

Wenn Sie Ihre alten/data/-Dateien an einem geeigneten Ort ablegen, akzeptiert WampServer alle bis auf den Ordner/mysql /, den er überschreibt. Dann importierte ich einfach ein Backup der/mysql/user-Daten aus meiner früheren Entwicklungsumgebung und ließ FLUSH PRIVILEGES in einem phpMyAdmin-SQL-Fenster laufen. Funktioniert super. Etwas muss falsch sein, weil die Dinge nicht so einfach sein sollten.

0
user1695595

Ich war heute mit diesem Problem konfrontiert. Meine war die Asp.Net Core API und verwendet Postgresql als Datenbank. Wir haben diese Datenbank als Docker-Container konfiguriert. Also habe ich als erstes geprüft, ob ich auf die Datenbank zugreifen kann oder nicht. Dazu habe ich am Anfang nach PgAdmin gesucht, da ich das selbe konfiguriert habe. Wenn Sie auf die resultierende Anwendung klicken, werden Sie zu http://127.0.0.1:23722/browser/ weitergeleitet. Dort können Sie im linken Menü versuchen, auf Ihre Datenbank zuzugreifen. Für mich wurde ein Fehler wie im Bild unten angezeigt.

enter image description here

Geben Sie das Passwort ein und versuchen Sie, ob Sie darauf zugreifen können oder nicht. Bei mir hat es nicht funktioniert. Da es sich um einen Docker-Container handelt, habe ich beschlossen, meinen Docker-Desktop neu zu starten. Klicken Sie dazu mit der rechten Maustaste auf das Docker-Symbol in der Taskleiste und klicken Sie auf Neu starten.

Einmal nach dem Neustart des Docker konnte ich mich anmelden und die Datenbank sehen und auch der Fehler war verschwunden, als ich die Anwendung in Visual Studio neu startete .

Ich hoffe es hilft.

0
Sibeesh Venu

Ich habe diesen Fehler beim Referenzieren von Diensten auf einem WCFHost von meiner Webschicht erhalten. Was für mich funktionierte, trifft möglicherweise nicht auf alle zu, aber ich lasse diese Antwort für diejenigen, die es dürfen. Die Portnummer für meinen WCFHost wurde zufällig von IIS aktualisiert. Ich musste einfach die Endrouten auf die svc-Referenzen in meiner Webkonfiguration aktualisieren. Problem gelöst. 

0
WiseGuy

Ich hatte dieses Problem häufig. Ich fand, dass SQL Server Agent Dienst nicht ausgeführt wurde. Nachdem ich den Dienst manuell gestartet hatte, wurde er behoben. Überprüfen Sie nochmals, ob der Dienst ausgeführt wird oder nicht:

  1. Eingabeaufforderung ausführen, services.msc eingeben und die Eingabetaste drücken
  2. Suchen Sie den Dienstnamen - SQL Server Agent ( Instanzname )

Wenn SQL Server Agent nicht ausgeführt wird, doppelklicken Sie auf den Dienst, um das Eigenschaftenfenster zu öffnen. Klicken Sie dann auf die Schaltfläche Start. Ich hoffe es hilft jemandem.

0
gmsi

Ich bin auf diesen Fehler gestoßen und habe mich etwas Zeit genommen, um ihn zu beheben. In meinem Fall hatte ich https und net.tcp als IIS - Bindungen für denselben Port konfiguriert. Natürlich können Sie nicht zwei Dinge am selben Port haben. Ich habe den Befehl netstat -ap tcp verwendet, um zu prüfen, ob an diesem Port etwas zu hören ist. Es hörte niemand zu. Durch das Entfernen einer unnötigen Bindung (in meinem Fall https) wurde mein Problem behoben.

0
Alex