때때로 WebService에 HttpWebRequest를 수행하는 동안 다음 오류가 발생합니다. 아래 코드도 복사했습니다.
System.Net.WebException : 원격 서버에 연결할 수 없음 ---> System.Net.Sockets.SocketException : 대상 시스템이 적극적으로 거부하여 연결할 수 없습니다. 127.0.0.1:80 System.Net.Sockets.Socket.DoConnect에서 (EndPoint endPointSnapshot, SocketAddress socketAddress) System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP)에서 System.Net.ServicePoint.ConnectSocketInternal에서 (부울 connectFailure, 소켓 s4, 소켓 s6, 소켓 및 소켓, IP 주소 및 주소, ConnectSocketState 상태, IAsyncResult asyncResult, Int32 시간 초과, 예외 및 예외) --- 내부 예외 스택 추적 끝 --- 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();
답변
이러한 상황이 항상 발생하면 문자 그대로 머신이 존재하지만 지정된 포트에서 수신 대기하는 서비스가 없거나 방화벽이 사용자를 막고 있다는 의미입니다.
“때때로”라는 단어를 사용하고 때때로 재 시도에 성공하면 서버에 전체 ‘백 로그’가 있기 때문일 수 있습니다.
accept
청취 소켓에서 대기하기를 기다리면 백 로그에 배치됩니다. 이 백로 그는 유한하고 매우 짧습니다. 1, 2 또는 3의 값은 드문 일이 아니므로 OS가 ‘수락’에 대한 요청을 대기열에 넣지 못할 수 있습니다.
백로 그는 listen
함수 의 매개 변수입니다. 모든 언어와 플랫폼은 기본적으로 C #을 포함 하여 이와 관련하여 동일한 API를 갖습니다 . 이 매개 변수는 서버를 제어하는 경우 구성 할 수 있으며 일부 설정 파일 또는 레지스트리에서 읽을 수 있습니다. 서버 구성 방법을 조사하십시오.
서버를 작성한 경우 소켓 승인시 처리량이 많을 수 있으며 이는 별도의 작업자 스레드로 이동하는 것이 좋으므로 승인은 항상 연결을 수신 할 준비가됩니다. 클라이언트 대기열을 줄이고 순차적으로 처리하는 다양한 아키텍처를 선택할 수 있습니다.
서버 백 로그를 늘릴 수 있는지 여부에 관계없이이 문제를 해결하려면 클라이언트 코드에서 논리를 재 시도 해야 합니다. 긴 백 로그에서도 서버가 해당 포트에서 다른 많은 요청을 수신했을 수 있습니다.
매핑을위한 포트가 소진 된 경우 NAT 라우터가이 오류를 발생시키는 경우는 거의 없습니다. 라우터가 고치기 전에 동일한 대상 주소 / 포트에 64K 동시 연결되어 있기 때문에이 가능성을 너무 오래 버릴 수 있다고 생각합니다.
답변
가장 가능성이 높은 이유는 방화벽입니다.
이 기사 에는 유용한 이유가 포함되어 있습니다.
기사에서 가능한 이유는 다음과 같습니다.
- FTP 서버 설정
- 소프트웨어 / 개인 방화벽 설정
- 여러 소프트웨어 / 개인 방화벽
- 바이러스 백신 소프트웨어
- LSP 레이어
- 라우터 펌웨어
- 컴퓨터가 꺼졌습니다
- 컴퓨터가 연결되지 않았습니다
- 바이올리니스트
답변
이것은 나에게도 일어났다. 때때로 프로젝트를 열 때이 오류가 나타나 좌절되었다. 문제는 때때로 웹 서비스의 포트 번호가 예기치 않게 변경되었다는 것입니다.
이 문제는 일반적으로 프로젝트 사본이 둘 이상있을 때 발생합니다.
내 프로젝트는 기본 프로젝트 파일의 Web.Config 파일에 지정된 특정 포트 번호로 웹 서비스를 호출했습니다. 포트 번호가 예기치 않게 변경되었으므로 브라우저가 웹 서비스를 찾지 못해 해당 오류가 발생했습니다.
다음 단계에 따라이 문제를 해결했습니다. (Visual Studio 2010)
Web service
프로젝트의 속성으로 이동하여 웹 탭을 클릭 하십시오-> 서버 섹션-> 특정 포트 확인을 클릭
한 다음standard port number
기본 프로젝트가 웹 서비스를 호출하는 기준 을 지정하십시오 .
이것이 문제를 해결하기를 바랍니다.
건배 🙂
답변
“인터넷 옵션”에서 프록시 설정을 확인해야한다고 생각합니다. 프록시 / ‘hide IP’응용 프로그램을 사용하는 경우이 문제가 발생할 수 있습니다.
답변
나는 같은 문제가 있었다. 문제는 셀레늄 서버를 시작하지 않았다는 것입니다. 셀레늄 서버를 다운로드하여 시작했습니다. 셀레늄 서버를 시작한 후 문제가 사라지고 모두 정상적으로 작동했습니다.
이것을 참조하십시오 : http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html