Czasami pojawia się następujący błąd podczas wykonywania HttpWebRequest w usłudze WebService. Skopiowałem również poniższy kod.
System.Net.WebException: Nie można połączyć się ze zdalnym serwerem ---> System.Net.Sockets.SocketException: Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia 127.0.0.1:80 w System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) w System.Net.Sockets.Socket.InternalConnect (RemoteEP EndPoint) at System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket & socket, IPAddress & address, ConnectSocketState state, IAsyncResult asyncResult, Limit czasu Int32, wyjątek i wyjątek) --- Koniec śledzenia stosu wyjątku wewnętrznego --- w 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();
Odpowiedzi:
Jeśli tak się dzieje zawsze, oznacza to dosłownie, że komputer istnieje, ale nie ma usług nasłuchujących na określonym porcie lub zapora sieciowa Cię powstrzymuje.
Jeśli zdarza się to czasami - użyłeś słowa „czasami” - i ponawianie próby się powiedzie, prawdopodobnie dzieje się tak, ponieważ serwer ma pełne „zaległości”.
Gdy czekasz na
accept
ed w gnieździe nasłuchującym, jesteś umieszczany w zaległości. Ten zaległość jest skończona i dość krótka - wartości 1, 2 lub 3 nie są niczym niezwykłym - dlatego system operacyjny może nie być w stanie ustawić w kolejce Twojego żądania przyjęcia.Backlog jest parametrem
listen
funkcji - wszystkie języki i platformy mają pod tym względem w zasadzie ten sam API, nawet C # one . Ten parametr jest często konfigurowalny, jeśli kontrolujesz serwer, i prawdopodobnie jest odczytywany z niektórych plików ustawień lub rejestru. Sprawdź, jak skonfigurować serwer.Jeśli napisałeś serwer, możesz mieć poważne przetwarzanie w akceptacji gniazda, a to może być lepiej przeniesione do osobnego wątku roboczego, aby twoja akceptacja była zawsze gotowa na odbieranie połączeń. Istnieje wiele opcji architektury, które można zbadać, które ograniczają kolejkowanie klientów i przetwarzanie ich sekwencyjnie.
Niezależnie od tego, czy możesz zwiększyć zaległości serwera, musisz ponownie spróbować logiki w kodzie klienta, aby poradzić sobie z tym problemem - ponieważ nawet przy długim zaległościach serwer może otrzymywać wiele innych żądań w tym czasie w tym porcie.
Istnieje rzadka możliwość, że router NAT dałby ten błąd, gdyby jego porty dla mapowań zostały wyczerpane. Myślę, że możemy odrzucić tę możliwość jako zbyt długi strzał, ponieważ router ma 64K jednoczesnych połączeń z tym samym adresem docelowym / portem przed wyczerpaniem.
źródło
Najbardziej prawdopodobnym powodem jest Firewall.
Ten artykuł zawiera zestaw powodów, które mogą ci się przydać.
Z artykułu możliwe przyczyny to:
źródło
Zdarzyło mi się to również… Czasami, kiedy otwieram mój projekt, pojawiał się ten błąd, który był frustrujący. Problem polegał na tym, że czasami numer portu usługi sieci Web zmieniał się nieoczekiwanie.
Ten problem zwykle występuje, gdy masz więcej niż jedną kopię projektu
Mój projekt dzwonił do usługi sieci Web z określonym numerem portu, który przypisałem w pliku Web.Config mojego głównego pliku projektu. Ponieważ numer portu zmienił się nieoczekiwanie, przeglądarka nie mogła znaleźć usługi sieci Web i zgłosiła ten błąd.
Rozwiązałem to, wykonując następujące kroki: (Visual Studio 2010)
Mam nadzieję, że to rozwiąże problem.
Twoje zdrowie :)
źródło
LocalHost:2532
dla mnie określony . Okazuje się, że został ustawiony w ten sposób przez poprzedniego właściciela w określonym przez Ciebie obszarze. Teraz, gdy ta tajemnica jest jasna, niektóre inne rzeczy stają się mniej tajemnicze. Dzięki!Myślę, że musisz sprawdzić ustawienia proxy w „opcjach internetowych”. Jeśli używasz aplikacji proxy / „ukryj ip”, może wystąpić ten problem.
źródło
Miałem ten sam problem. Problem polega na tym, że nie uruchomiłem serwera selenu. Pobrałem serwer selenium i uruchomiłem go. Po uruchomieniu serwera selenu problem zniknął i wszystko działało dobrze.
Zobacz to: http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html
źródło
Przejdź do projektu WCF - właściwości -> -> debuggery -> odznacz pole wyboru
źródło
Miałem ten sam błąd z moją usługą WCF przy użyciu powiązania Net TCP, ale w moim przypadku problem został rozwiązany po uruchomieniu poniższych usług.
Net.Pipe.Listener.Adapter
Net.TCP.Listener.Adapter
Usługa udostępniania portów Net.Tcp
źródło
Jest to naprawdę specyficzne, ale jeśli pojawi się ten błąd po próbie połączenia z bazą danych za pomocą mongo, działało dla mnie uruchomienie mongod.exe przed uruchomieniem mongo.exe, a następnie połączenie działało dobrze. Mam nadzieję, że to komuś pomoże.
źródło
Wystąpił ten sam błąd, ponieważ gdy serwer i klient działają na tym samym komputerze, klient potrzebuje lokalnego adresu IP serwera, a nie publicznego adresu IP, aby komunikować się z serwerem, potrzebujesz publicznego adresu IP tylko w przypadku, gdy serwer i klient działają na osobnym komputerze, więc użyj lokalnego adresu IP w programie klienckim do łączenia się z serwerem Lokalny adres IP można znaleźć za pomocą tej metody.
źródło
Wystąpił ten błąd w aplikacji korzystającej z AppFabric. Wskazówką było znalezienie
DataCacheException
śladu stosu. Aby sprawdzić, czy jest to dla Ciebie problem, uruchom następujące polecenie PowerShell:Jeśli którakolwiek z tych dwóch usług zostanie zatrzymana, pojawi się ten błąd.
źródło
Cóż, po raz pierwszy otrzymałem ten błąd na Windows 8 64-bit, i okazuje się, że mój plik my.ini został zresetowany, a plik bin / mysqld został usunięty, między innymi w
"Program Files/MySQL/MySQL Server 5.6"
folderze.Aby to naprawić, musiałem ponownie uruchomić instalator MySQL, instalując tylko serwer, i skopiować najnowszą wersję pliku my.ini
"ProgramData/MySQL/MySQL Server 5.6"
, o nazwiemy_2014-03-28T15-51-20.ini
w moim przypadku (nie wiem, jak i dlaczego to tam ostatnio skopiowano) z powrotem w"Program Files/MySQL/MySQL Server 5.6"
.Jedyną zmianą w systemie od czasu działania MySQL była instalacja Traktora 2 i karty dźwiękowej Traktor Audio 2 firmy Native Instruments, co tak naprawdę nie powinno być przyczyną tego problemu, a nikt inny nie używał tego systemu poza mną. Jeśli ktoś ma jakąś wskazówkę, uprzejmie byłoby to skomentować, aby temu zapobiec dla mnie i każdego, kto to spotkał.
źródło
Dla odniesienia do usługi w ramach rozwiązania.
Uruchom ponownie stację roboczą
Odbuduj swoje rozwiązanie
W tym momencie otrzymałem wiadomość (Windows 7), aby umożliwić dostęp do systemu. Następnie odwołanie do usługi zostało poprawnie zaktualizowane bez błędów.
źródło
Chciałbym udostępnić tę odpowiedź, którą znalazłem, ponieważ przyczyną problemu nie była zapora ogniowa lub proces nie nasłuchuje poprawnie, to był przykładowy kod udostępniony przez Microsoft.
https://msdn.microsoft.com/en-us/library/system.net.sockets.socket%28v=vs.110%29.aspx
Zaimplementowałem tę funkcję prawie dokładnie tak, jak napisano, ale tak się stało, że dostałem ten błąd:
2016-01-05 12: 00: 48,075 [10] BŁĄD - Błąd: System.Net.Sockets.SocketExocket (0x80004005): Nie można nawiązać połączenia, ponieważ maszyna docelowa aktywnie go odmawia [fe80 :: caa: 745: a1da: e6f1% 11]: 4080
Ten kod mówi, że gniazdo jest podłączone, ale nie pod poprawnym adresem IP, który jest rzeczywiście potrzebny do prawidłowej komunikacji. (Dostarczone przez Microsoft)
Przepisałem kod, aby użyć pierwszego prawidłowego adresu IP, jaki znajdzie. Martwię się tylko o korzystanie z tego IPV4, ale działa on z localhost 127.0.0.1 i faktycznie adresem IP twojej karty sieciowej, gdzie przykład podany przez Microsoft nie powiódł się!
źródło
W moim przypadku niektóre domeny działały, a niektóre nie. Dodanie odwołania do adresu URL serwera proxy mojej organizacji w pliku web.config naprawiło problem.
źródło
Ten błąd wystąpił w przypadku odwoływania się do usług znajdujących się na WCFHost z mojej warstwy internetowej. To, co zadziałało dla mnie, może nie dotyczyć wszystkich, ale pozostawiam tę odpowiedź tym, którzy mogą. Numer portu mojego WCFHost został losowo zaktualizowany przez IIS, po prostu musiałem zaktualizować końcowe trasy do referencji svc w mojej konfiguracji internetowej. Problem rozwiązany.
źródło
W moim scenariuszu mam dwie aplikacje:
źródło
Jeszcze jedna możliwość -
Upewnij się, że próbujesz otworzyć ten sam adres IP, na którym słuchasz. Moja aplikacja serwera nasłuchiwała adresu IP komputera hosta za pomocą IPv6, ale klient próbował połączyć się z adresem IPv4 komputera hosta.
źródło
W moim przypadku było to spowodowane błędnym wdrożeniem, w którym nie dokonano ustawienia w pliku web.config.
Kolega wyjaśnił, że adres IP w komunikacie o błędzie reprezentuje hosta lokalnego.
Kiedy poprawiłem web.config, wtedy użyłem poprawnego adresu URL, aby wykonać wywołania serwera i działało.
Myślałem, że opublikuję to na wypadek, gdyby to mogło komuś pomóc.
źródło
Używając WampServer 64bit na Windows 7 Home Premium 64bit napotkałem dokładnie ten problem. Po wielu godzinach eksperymentów stało się jasne, że wszystko, co było potrzebne, znajdowało się w my.ini, aby skomentować jedną linię. Potem działało dobrze.
skomentował 1 wiersz socket = mysql
Jeśli umieścisz swoje stare / dane / pliki w odpowiedniej lokalizacji, WampServer zaakceptuje je wszystkie oprócz folderu / mysql /, który zapisuje. Więc po prostu zaimportowałem kopię zapasową danych / mysql / użytkownika z mojego wcześniejszego środowiska programistycznego i uruchomiłem FLUSH PRIVILEGES w oknie SQL phpMyAdmin. Działa świetnie. Coś musi być nie tak, ponieważ nie powinno być tak łatwo.
źródło
Często występował ten problem. Odkryłem, że
SQL Server Agent
usługa nie działa. Po ręcznym uruchomieniu usługi zostało naprawione. Dokładnie sprawdź, czy usługa jest uruchomiona:services.msc
i naciśnij EnterSQL Server Agent
( nazwa wystąpienia )Jeśli
SQL Server Agent
nie jest uruchomiony, kliknij dwukrotnie usługę, aby otworzyć okno właściwości. Następnie kliknijStart
przycisk. Mam nadzieję, że to komuś pomoże.źródło
Natrafiłem na ten błąd i trochę czasu go rozwiązałem. W moim przypadku miałem https i net.tcp skonfigurowane jako powiązania IIS na tym samym porcie. Oczywiście nie możesz mieć dwóch rzeczy na tym samym porcie. Użyłem polecenia netstat -ap tcp, aby sprawdzić, czy coś nasłuchuje na tym porcie. Nikt nie słuchał. Usunięcie niepotrzebnego wiązania (w moim przypadku https) rozwiązało mój problem.
źródło
To był głupi problem z mojej strony, dodałem domyślną wersję proxy do mojego web.config, aby przechwycić ruch w Fiddler, a potem zapomniałem go usunąć!
źródło
Istnieje usługa o nazwie „SQL Server Browser”, która zapewnia klientom informacje o połączeniu z SQL Server.
W moim przypadku żadne z istniejących rozwiązań nie działało, ponieważ ta usługa nie była uruchomiona. Wróciłem i wszystko wróciło do perfekcji.
źródło
Dzisiaj miałem do czynienia z tym problemem. Mój był Asp.Net Core API i używa go
Postgresql
jako bazy danych. Skonfigurowaliśmy tę bazę danych jako kontener Docker. Pierwszym krokiem było sprawdzenie, czy mogę uzyskać dostęp do bazy danych, czy nie. Aby to zrobić, szukałem naPgAdmin
początku, ponieważ skonfigurowałem to samo. Kliknięcie wynikowej aplikacji spowoduje przekierowanie do strony http://127.0.0.1:23722/browser/ . Tam możesz spróbować uzyskać dostęp do bazy danych w menu po lewej stronie. Dla mnie pojawiał się błąd jak na poniższym obrazku.Wprowadź hasło i spróbuj uzyskać dostęp do niego, czy nie. Dla mnie to nie działało. Ponieważ jest to kontener Docker, postanowiłem zrestartować pulpit Docker, aby to zrobić, kliknij prawym przyciskiem myszy ikonę dokowania na pasku zadań i kliknij polecenie Uruchom ponownie.
Raz po ponownym uruchomieniu dokera mogłem się zalogować i zobaczyć bazę danych, a także błąd zniknął po ponownym uruchomieniu aplikacji w programie Visual Studio .
Mam nadzieję, że to pomoże.
źródło
może to być spowodowane problemami z autoryzacją; tak było w moim przypadku. Jeśli masz na przykład:
[Authorize("WriteAccess")]
lub[Authorize("ReadAccess")]
na górze funkcji kontrolera, spróbuj je skomentować.źródło
Dla mnie chciałem uruchomić mongo w skorupce (bez względu na dokładny kontekst pytania, ale mając ten sam komunikat o błędzie przed uruchomieniem mongo w skorupce)
Proces „Usługa MongoDB” nie był uruchomiony w Usługach
Uruchom cmd jako Administrator i wpisz,
Aby zobaczyć, jak MongoDB działa i po prostu wpisz mongo, w cmd poda szczegóły wersji Mongo i adres URL połączenia Mongo
źródło
Właśnie sobie z tym poradziłem ...
Tutaj, po mojej stronie, mam 2 oddzielne rozwiązania Visual Studio (.sln) ... otworzyłem każde z nich we własnej instancji Visual Studio.
Rozwiązanie 2 wywołuje kod rozwiązania 1. Problem związany był z portem przypisanym do rozwiązania 1. Musiałem zmienić port w rozwiązaniu 1 na inny, a następnie rozwiązanie 2 znów zaczęło działać. Sprawdź więc port przypisany do twojego projektu.
źródło