2010-06-15 8 views
4

다음 코드는 FTP를 사용하여 파일을 검색하는 코드입니다 (정상적으로 작동 함). 후자는 작동하지 않을 이유SSL을 사용한 WebRequest

는 는
  FtpWebRequest request = (FtpWebRequest)WebRequest.Create(svrPath); 

      request.KeepAlive = true; 
      request.UsePassive = true; 
      request.UseBinary = true; 

      // The following line causes the download to fail 
      request.EnableSsl = true; 

      request.Method = WebRequestMethods.Ftp.DownloadFile; 
      request.Credentials = new NetworkCredential(uname, passw); 

      using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) 
      using (Stream responseStream = response.GetResponseStream()) 
      using (StreamReader reader = new StreamReader(responseStream)) 
      using (StreamWriter destination = new StreamWriter(destinationFile)) 
      { 
       destination.Write(reader.ReadToEnd()); 
       destination.Flush(); 
      } 

사람은 말해 줄 수 :이 사용하는 SSL을하려고 할 때 다음과 같이

  FtpWebRequest request = (FtpWebRequest)WebRequest.Create(svrPath); 

      request.KeepAlive = true; 
      request.UsePassive = true; 
      request.UseBinary = true; 

      request.Method = WebRequestMethods.Ftp.DownloadFile; 
      request.Credentials = new NetworkCredential(uname, passw); 

      using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) 
      using (Stream responseStream = response.GetResponseStream()) 
      using (StreamReader reader = new StreamReader(responseStream)) 
      using (StreamWriter destination = new StreamWriter(destinationFile)) 
      { 
       destination.Write(reader.ReadToEnd()); 
       destination.Flush(); 
      } 

그러나, 나는 파일을 액세스 할 수 없습니다입니까?

편집 :

나는 다음과 같은 예외가 얻을 : 당신은 SSL 인증서의 유효성을 검사 할

The remote server returned an error: (530) Not logged in. 
+0

오류 번호/메시지 란 무엇입니까? –

+0

죄송합니다 - 내 질문에 편집했습니다 –

+2

다른 응용 프로그램과 함께 ssl을 사용하여 ftp에 연결을 시도 했습니까? ssl이 활성화되어 있는지 확인 했습니까? – Prix

답변

8

를? FTP 연결을 통해 SSL을 수행하는 것은 .EnableSsl 속성을 설정하는 것만 큼 간단하지 않습니다. 인증서 유효성 검사 방법을 제공해야합니다. 원하는 작업을 수행하기위한 C# 코드는 this article을 참조하십시오. 또한 좀 더 자세한 구현이 필요한 경우 누군가가 복사하여 전체 FTP 클래스를 this MSDN article에 붙여 넣었습니다.

if (request.EnableSsl) ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); 

하고 나중에 :

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { 
return true; // Read the links provided above for real implementation 
} 
-3

을이 에서는 FtpWebRequest 요청 = (에서는 FtpWebRequest) FtpWebRequest.Create (svrPath을 시도

그냥 빨리까지이 함께 신속하게 테스트를 실행 얻을 수 있습니다);

+3

전혀 도움이되지 않습니다. – SLaks

관련 문제