programing

대상 컴퓨터가 이를 적극적으로 거부하여 연결할 수 없습니다.

subpage 2023. 5. 29. 10:52
반응형

대상 컴퓨터가 이를 적극적으로 거부하여 연결할 수 없습니다.

때때로 웹 서비스에 HttpWebRequest를 수행하는 동안 다음 오류가 발생합니다.저도 아래 코드를 복사했습니다.


시스템.넷.웹 예외:원격 서버 ---> 시스템에 연결할 수 없습니다.네트. 소켓.소켓 예외:대상 시스템이 127.0.0.1:80을 능동적으로 거부했기 때문에 연결할 수 없습니다.시스템에서.네트. 소켓.Socket.DoConnect(엔드포인트 endPoint 스냅샷, 소켓 주소)시스템에서.네트. 소켓.Socket.InternalConnect(엔드포인트 원격)EP)시스템에서.Net. ServicePoint.ConnectSocketInternal(Boolean ConnectFailure, Sockets4, Sockets6, Socket&Socket, IPAddress&Address, ConnectSocketState 상태, IAsyncResult, Int32 timeout, Exception)내부 예외 스택 추적의 끝 ---시스템에서.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();

이 문제가 항상 발생하면 문자 그대로 시스템이 존재하지만 지정된 포트에서 수신 중인 서비스가 없거나 방화벽이 사용자를 차단하고 있음을 의미합니다.

"가끔"이라는 단어를 사용한 경우, 서버에 전체 '백로그'가 있기 때문일 수 있습니다.

이 되기를 때.accept수신 소켓에서 ed, 당신은 백로그에 놓이게 됩니다.이 백로그는 유한하고 매우 짧습니다(1, 2 또는 3). 따라서 OS가 사용할 '승인' 요청을 대기열에 넣지 못할 수 있습니다.

는 백그는변다니에 있는 입니다.listen기능 - 모든 언어와 플랫폼은 기본적으로 동일한 API를 가지고 있으며, 심지어 C# API도 가지고 있습니다.이 매개변수는 서버를 제어하는 경우 종종 구성할 수 있으며 일부 설정 파일 또는 레지스트리에서 읽을 수 있습니다.서버를 구성하는 방법을 조사합니다.

서버를 작성한 경우 소켓을 수락하는 과정에서 처리가 많이 수행될 수 있으며, 이 작업은 별도의 작업자 스레드로 더 잘 이동하여 수락이 항상 연결을 수신할 준비가 되어 있습니다.클라이언트를 대기열에 넣고 순차적으로 처리하는 것을 완화하는 다양한 아키텍처 선택사항이 있습니다.

서버 백로그를 늘릴 수 있는지 여부와 상관없이, 백로그가 길더라도 서버가 해당 포트에서 다른 많은 요청을 수신할 수 있으므로 이 문제를 해결하려면 클라이언트 코드에 재시도 로직이 필요합니다.

매핑용 포트가 모두 사용된 경우 NAT 라우터에서 이 오류가 발생할 가능성은 거의 없습니다.하지만 라우터가 소진되기 전에 동일한 대상 주소/포트에 64K 동시 연결이 가능하기 때문에 이 가능성을 너무 오래 끌 수 있다고 생각합니다.

가장 가능성이 높은 이유는 방화벽입니다.

문서에는 사용자에게 유용할 수 있는 일련의 이유가 포함되어 있습니다.

이 기사에서 생각할 수 있는 이유는 다음과 같습니다.

  • FTP 서버 설정
  • 소프트웨어/개인 방화벽 설정
  • 여러 소프트웨어/개인 방화벽
  • 안티바이러스 소프트웨어
  • LSP 계층
  • 라우터 펌웨어
  • 컴퓨터 끄기
  • 컴퓨터가 연결되지 않음
  • 피들러

저도 그랬어요.웹 서비스의 포트 번호가 예기치 않게 변경되었기 때문입니다.

이 문제는 일반적으로 프로젝트의 복사본이 두 개 이상 있을 때 발생합니다.

제 프로젝트는 웹에서 할당한 특정 포트 번호로 웹 서비스를 호출하는 것이었습니다.내 기본 프로젝트 파일의 구성 파일입니다.포트 번호가 예기치 않게 변경되어 브라우저에서 웹 서비스를 찾을 수 없어 오류가 발생했습니다.

다음 단계를 수행하여 이 문제를 해결했습니다. (Visual Studio 2010)

의속로이다니의 합니다.Web service프로젝트 --> 웹 탭을 클릭합니다. --> 서버 섹션에서 --> 특정 포트를 선택한 다음 할당합니다.standard port number웹 서비스를 호출하는 것이 주요 프로젝트입니다.

이것으로 문제가 해결되기를 바랍니다.

건배 :)

"인터넷 옵션"에서 프록시 설정을 확인해야 할 것 같습니다.프록시/'IP 숨기기' 응용 프로그램을 사용하는 경우 이 문제가 발생할 수 있습니다.

저도 같은 문제가 있었습니다.문제는 셀레늄 서버를 시작하지 않았다는 것입니다.셀레늄 서버를 다운받아서 시작했습니다.셀레늄 서버를 시작한 후 문제가 없어졌고 모든 것이 정상적으로 작동했습니다.

다음을 참조하십시오. http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html

HTTP만 있는 서비스(예: http://example.com )를 호출하고 HTTPS(예: https://example.com )를 호출하면 "대상 컴퓨터가 이를 적극적으로 거부했기 때문에 연결할 수 없습니다."라는 오류가 정확히 표시됩니다.

Net TCP 바인딩을 사용하는 WCF 서비스에서도 동일한 오류가 발생했지만, 이 경우 아래 서비스를 시작한 후 해결되었습니다.

네트. 파이프.청취자.어댑터

넷.TCP.청취자.어댑터

Net.Tcp 포트 공유 서비스

제 경우 일부 도메인은 작동했지만 일부 도메인은 작동하지 않았습니다.내 web.config에서 내 조직의 프록시 URL에 참조를 추가하여 문제를 해결했습니다.

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

서버와 클라이언트가 동일한 시스템에서 실행될 때 클라이언트가 서버와 통신하기 위해 서버 로컬 IP 주소가 아니라 공용 IP 주소가 필요하기 때문에 서버와 클라이언트가 별도의 시스템에서 실행되는 경우에만 공용 IP 주소가 필요하므로 클라이언트 프로그램에서 로컬 IP 주소를 사용하여 서버와 연결할 수 있습니다. 로컬 IP 주소를 찾을 수 있습니다.이 방법을 사용합니다.

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

            return "null";
        }

    }

AppFabric을 사용하는 애플리케이션에서 이 오류가 발생했습니다.단서는 스택 추적을 받는 것이었습니다.이 문제가 문제인지 확인하려면 다음 PowerShell 명령을 실행합니다.

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

이 두 서비스 중 하나가 중지되면 이 오류가 발생합니다.

저는 mongo in shell을 시작하고 싶었습니다(질문의 정확한 맥락과 무관하지만 mongo in shell을 시작하기도 전에 동일한 오류 메시지가 있음).

'MongoDB 서비스' 프로세스가 서비스에서 실행되고 있지 않습니다.

cmd를 Administrator로 시작하고 다음을 입력합니다.

net start MongoDB

MongoDB가 가동되고 실행 중인지 확인하기 위해 mongo만 입력하면 Mongo 버전 세부 정보와 Mongo Connection URL이 표시됩니다.

처음으로 8 이 이 파일은 Windows 8 64bit의 .ini에서 /mysqld 이 삭제되었습니다."Program Files/MySQL/MySQL Server 5.6"폴더를 누릅니다.

문제를 다시 만 설치하고 MySQL에서 을 복사해야 ."ProgramData/MySQL/MySQL Server 5.6",이름 지어진my_2014-03-28T15-51-20.ini나의 경우 (어떻게 또는 왜 그렇게 최근에 그곳에 복사되었는지 모르겠다) 다시."Program Files/MySQL/MySQL Server 5.6".

MySQL이 작동한 이후 시스템이 변경된 것은 Native Instruments의 Tractor 2와 Tractor Audio 2 사운드 카드를 설치한 것뿐인데, 이는 정말로 이 문제를 야기하지 말았어야 했고, 저 외에는 아무도 이 시스템을 사용하지 않았습니다.만약 누군가가 단서를 가지고 있다면, 나와 이것을 접한 다른 사람들을 위해 이것을 방지하기 위해 당신이 의견을 말해주는 것이 친절할 것입니다.

솔루션 내의 서비스 참조용입니다.

  1. 워크스테이션 다시 시작

  2. 솔루션 재구축

  3. WCF 클라이언트 프로젝트에서 서비스 참조 업데이트

이 시점에서 시스템 액세스를 허용하라는 메시지(Windows 7)를 받았습니다.그런 다음 서비스 참조가 오류 없이 올바르게 업데이트되었습니다.

문제의 원인은 방화벽이나 프로세스가 제대로 듣지 않아서가 아니라 제가 사용했던 마이크로소프트에서 제공한 코드 샘플이기 때문에 제가 찾은 이 답변을 공유하고 싶습니다.

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

이 기능을 거의 그대로 구현했는데 다음 오류가 발생했습니다.

2016-01-05 12:00:48,075 [10] ERROR - 오류: System.네트. 소켓.소켓 예외(0x80004005):대상 컴퓨터가 적극적으로 거부하여 연결할 수 없습니다 [fe80::caa:745:a1da:e6f1%11]:4080

이 코드는 소켓이 연결되어 있지만 올바른 통신에 필요한 올바른 IP 주소를 사용하지 않는다고 말합니다. (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;
    }

처음 찾은 유효한 IP를 사용하기 위해 코드를 다시 작성했습니다.IPV4를 사용하는 것에만 관심이 있지만, 로컬 호스트인 127.0.0.1 및 Microsoft에서 제공한 예제가 실패한 네트워크 카드의 실제 IP 주소와 함께 작동합니다!

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

이것은 정말 구체적이지만, 만약 당신이 mongo를 사용하여 데이터베이스에 연결하려고 시도한 후에 이 오류가 발생한다면, 나에게 효과적인 것은 mongod를 실행하는 것이었습니다.mongo를 실행하기 전에 exe.exe 그리고 나서 연결이 잘 작동했습니다.이것이 누군가에게 도움이 되기를 바랍니다.

한 가지 가능성이 더 있습니다.

듣고 있는 IP 주소와 동일한 IP 주소를 열려고 하는지 확인합니다.서버 앱이 IPv6을 사용하여 호스트 시스템의 IP 주소를 수신하고 있지만 클라이언트가 호스트 시스템의 IPv4 주소에서 연결을 시도하고 있습니다.

웹 계층에서 WCFHost에 있는 서비스를 참조할 때 이 오류가 발생했습니다.저에게 효과가 있었던 것이 모든 사람에게 적용되는 것은 아닐 수도 있지만, 저는 그것이 가능한 사람들에게 이 대답을 남깁니다.WCFHost의 포트 번호가 IIS에 의해 임의로 업데이트되었기 때문에 웹 구성의 svc 참조로 종료 경로를 업데이트해야 했습니다.문제는 해결됐습니다.

이 시나리오에서는 두 가지 애플리케이션이 있습니다.

  • 앱 1
  • 앱2

가정:App1은 포트 5000에서 App2의 활동을 청취해야 합니다.

오류: App1을 시작하고 존재하지 않는 고스트 타운을 청취하려고 하면 오류가 발생합니다.

솔루션:앱2를 먼저 시작한 다음 앱1을 사용하여 들어보십시오.

WCF 프로젝트로 이동 - 속성 -> -> 디버거 -> 확인란 표시 해제

편집 사용 및 계속

저의 경우, 이는 제 web.config의 설정이 이루어지지 않은 잘못된 배포로 인한 것입니다.

한 대학생은 오류 메시지의 IP 주소가 로컬 호스트를 나타낸다고 설명했습니다.

web.config를 수정했을 때 올바른 URL을 사용하여 서버를 호출하고 있었고 작동했습니다.

누군가에게 도움이 될 수도 있을 것 같아서 글을 올렸습니다.

Windows 7 Home Premium 64bit에서 WampServer 64bit를 사용할 때 이와 같은 문제가 발생했습니다.몇 시간에 걸친 실험 끝에 필요한 것은 my.ini에서 한 줄에 대해 설명하는 것뿐이라는 것이 명백해졌습니다.그럼 잘 됐어요.

코멘트 아웃 1라인 소켓= 소켓

이전 /data/ 파일을 적절한 위치에 두면 WampServer가 덮어쓰는 /mysql/ 폴더를 제외한 모든 파일을 수락합니다.그런 다음 이전 개발 환경에서 /mysql/ 사용자 데이터의 백업을 가져와 phpMyAdmin SQL 창에서 FLASH PRILOGES를 실행했습니다.잘 작동합니다.일이 이렇게 쉬워서는 안 되기 때문에 뭔가 잘못된 것이 분명합니다.

저는 이 문제가 자주 발생했습니다.찾았습니다SQL Server Agent서비스가 실행되고 있지 않습니다.일단 수동으로 서비스를 시작하면 수정이 되었습니다.서비스가 실행 중인지 다시 확인합니다.

  1. 프롬프트를 하고 " 프트실행유, " "를 합니다.services.msc그리고 엔터를 누릅니다.
  2. 이름 - 서스이찾기름 -SQL Server Agent(인스턴스 이름)

한다면SQL Server Agent가 실행되고 있지 않습니다. 서비스를 두 번 클릭하여 속성 창을 엽니다.그런 다음 을 클릭합니다.Start바랍니다.누군가에게 도움이 되길 바랍니다.

이 오류를 발견하고 해결하는 데 시간이 걸렸습니다.제 경우에는 https와 net.tcp가 동일한 포트에서 IIS 바인딩으로 구성되어 있었습니다.분명히 같은 포트에서 두 가지를 사용할 수 없습니다.netstat -ap tcp 명령을 사용하여 해당 포트에서 수신 중인 항목이 있는지 확인했습니다.아무도 듣지 않았습니다.불필요한 바인딩(제 경우 https)을 제거하여 문제를 해결했습니다.

제 입장에서는 어리석은 문제였습니다. Fiddler의 트래픽을 차단하기 위해 web.config에 기본 프록시를 추가했지만 제거하는 것을 잊었습니다!

클라이언트에 SQL Server 연결 정보를 제공하는 "SQL Server Browser"라는 서비스가 있습니다.

저의 경우 이 서비스가 실행되지 않았기 때문에 기존 솔루션이 작동하지 않았습니다.저는 그것을 다시 시작했고 모든 것이 완벽하게 작동했습니다.

저는 오늘 이 문제에 직면했습니다.사용하고 NetCore API합니다.Postgresql되었습니다.이 데이터베이스를 도커 컨테이너로 구성했습니다.그래서 제가 한 첫 번째 단계는 제가 데이터베이스에 접근할 수 있는지 여부를 확인하는 것입니다.내가 검색한 것을 하기 위해PgAdmin처음에는 동일하게 구성했습니다.결과 응용프로그램을 클릭하면 http://127.0.0.1:23722/browser/로 리디렉션됩니다.왼쪽 메뉴에서 데이터베이스에 액세스할 수 있습니다.저는 아래 이미지와 같은 오류가 발생했습니다.

여기에 이미지 설명 입력

암호를 입력하고 암호에 액세스할 수 있는지 여부를 시도합니다.나에게 그것은 효과가 없었습니다.도커 컨테이너이므로 도커 데스크톱을 다시 시작하기로 결정했습니다. 작업 표시줄에서 도커 아이콘을 마우스 오른쪽 단추로 클릭하고 다시 시작을 클릭합니다.

도커를 다시 시작한 후 로그인하여 데이터베이스를 볼 수 있었고 Visual Studio에서 응용 프로그램을 다시 시작할 때 오류가 사라졌습니다.

도움이 되길 바랍니다.

허가 문제 때문일 수도 있습니다. 저는 그렇습니다.들어 다음과 같은 :[Authorize("WriteAccess")]또는[Authorize("ReadAccess")]컨트롤러 기능의 맨 위에 주석을 달아 보십시오.

난 지금 이걸 마주하고 있어요

여기에 이미지 설명 입력

여기에는 두 개의 분리된 Visual Studio 솔루션(.sln)이 있습니다.각각의 Visual Studio 인스턴스를 열었습니다.

솔루션 2는 솔루션 1 코드를 호출합니다.이 문제는 솔루션 1에 할당된 포트와 관련이 있습니다.솔루션 1의 포트를 다른 포트로 변경한 후 솔루션 2가 다시 작동하기 시작했습니다.따라서 프로젝트에 할당된 포트를 확인해야 합니다.

일반적으로 연결 스크립트는 사용할 포트를 언급하지 않습니다.예:

$mysqli = mysqli_connect('127.0.0.0.1', 'user', 'password', 'database');

따라서 포트 3306을 사용하지 않는 관리자와 연결하려면 연결 요청에 포트 번호를 지정해야 합니다.

$mysqli = mysqli_connect('127.0.0.0.1', 'user', 'password', 'database', '3307');

MySQL 또는 MariaDB 데이터베이스 관리자에서 연결을 확인하려면 매개 변수에 따라 스크립트를 먼저 수정한 브라우저 주소 표시줄에 'http://localhost/testmysql.php'를 넣어 스크립트 wamp(64)\www\testmysql.php를 사용합니다.

서비스를 시작하는 것을 잊어버려서 포트에서 수신 중인 서비스가 없어서 실패했습니다.서비스를 시작하여 해결되었습니다.

언급URL : https://stackoverflow.com/questions/2972600/no-connection-could-be-made-because-the-target-machine-actively-refused-it

반응형