2012-09-28 3 views
1

웹 응용 프로그램을 사용하여 서비스를 호출하는 동안 "원격 서버에 연결할 수 없습니다."오류가 발생합니다. 하지만 콘솔 응용 프로그램에서이 코드를 호출하면 동일한 코드가 실행됩니다. 방금 서비스 URL이 있습니다. I가 언급 할 필요가 Web.config의 또는 IIS에 어떤 설정이 있나요웹 응용 프로그램에서 서비스를 호출하는 중 "원격 서버에 연결할 수 없습니다."오류가 발생합니다.

HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest; 
    req.Method = "POST"; 
    req.ContentType = "application/x-www-form-urlencoded"; 
       X509Certificate cert = X509Certificate.CreateFromCertFile(certificatePath); 
    req.ClientCertificates.Add(cert); 


    using (StreamReader sr = File.OpenText(inFilePath)) 

    { 
     string xml = sr.ReadToEnd(); 
     string postRaw = string.Format("request={0}", System.Web.HttpUtility.UrlEncode(xml)); 
     byte[] buf = Encoding.UTF8.GetBytes(postRaw); 

     req.ContentLength = buf.Length; 
     try 
     { 
      Stream s = req.GetRequestStream(); //This is where I get the error. 


      s.Write(buf, 0, buf.Length); 
      s.Close(); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

    HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 


    if (resp.StatusCode == HttpStatusCode.OK) 
    { 
     StringBuilder sb = new StringBuilder(); 

     using (StreamReader reader = new StreamReader(resp.GetResponseStream(),  System.Text.Encoding.UTF8)) 
     { 
      string line; 
      while ((line = reader.ReadLine()) != null) 
      { 
       sb.Append(line + "\r\n"); 
      } 
     } 

     string resXml = sb.ToString(); 
    } 

을 : 여기

at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, 
    SocketAddress socketAddress) 
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) 
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, 
    Socket s4, Socket s6, Socket& socket, IPAddress& address, 
    ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, 
    Exception& exception) 

내가 사용하고있는 코드입니다 : 여기

는 스택 추적입니다 웹 응용 프로그램에서 작동합니까?

내 팀원 중 한 명이 이미이 질문을했지만 아직 아무도 대답하지 않았습니다. 그래서 그것이 내가 다시 게시하는 이유입니다.

이 정확한 내부 예외 : 연결된 파티 일정 시간 후에 제대로 응답하지 않았기 때문에 연결 시도가 실패, 또는 ​​설정된 연결이 실패

연결된 호스트는 XX.XX.를 응답하지 않았기 때문에 XXX.XXX : 443

+0

그것은 당신의 예외가 URL에 의한 것이 분명 우회에 대한 귀하의 web.config 파일을 확인하지 않으면

  • . "url"과 "certificatePath"를 확인 했습니까? 코드가 업로드 된 위치에 액세스 할 수 있어야합니다. – Amir

  • +0

    @Amir : 내가 콘솔 애플리케이션에서 실행할 때 코드가 올바르게 작동한다고 분명하게 언급했기 때문에. 즉, "url"및 "certificate path"에 문제가 없음을 의미합니다. 웹 응용 프로그램에서 실행할 때만이 오류가 발생합니다. – Sumit

    +0

    맞아! 그러나 웹 애플리케이션이 파일에 액세스하는 것을 거부하는 경우가 많습니다. 즉 파일 권한. 그리고 또 다른 질문! 당신은 복사/붙여 넣기 오류 또는 이것은 의역입니다 :) – Amir

    답변

    3

    따라서 귀하의 URL은 SSL입니다. 콘솔 응용 프로그램이 실행과 동일한 컴퓨터에서 웹 응용 프로그램을 테스트하는 경우

    1. , 응용 프로그램 풀의 ID를 변경 :

      우리는이 가능성을 가지고있다. VS는 ID를 사용하고 IIS는 다른 ID를 사용합니다. 설정은 방화벽

      <system.net> 
      <defaultProxy> 
          <proxy usesystemdefault="true" proxyaddress="http://proxy:port" bypassonlocal="false" /> 
      </defaultProxy> 
      </system.net> 
      
    +0

    두 번째 지점에서 프록시 및 포트 번호를 지정해야합니까? 서비스 및 포트 번호 (https : Myservice/App)와 같은 URL을 443으로 언급해야합니까? – Sumit

    +0

    프록시가 호스트에 의해 설정됩니다. https의 기본 포트 번호는 443입니다. 따라서 포트 번호를 언급하지 않고 IE에서 URL을 탐색 할 수 있으면 필요하지 않습니다. – Amir

    +1

    나중에 내 문제를 해결,이 솔루션 대답으로 받아 들여야합니다. –