2011-03-22 7 views
10

방화벽 문제로 인해 '활성'모드 (예 : PASV 명령을 사용하지 않음)를 사용하여 FTP를 수행해야합니다.FtpWebRequest를 사용하여 "활성"모드 FTP를 수행 할 수 있습니까?

현재, 우리의 라인을 따라 코드를 사용하고 :

// Get the object used to communicate with the server. 
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm"); 
request.Method = WebRequestMethods.Ftp.UploadFile; 

// This example assumes the FTP site uses anonymous logon. 
request.Credentials = new NetworkCredential ("anonymous","[email protected]"); 

// Copy the contents of the file to the request stream. 
StreamReader sourceStream = new StreamReader("testfile.txt"); 
byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
sourceStream.Close(); 
request.ContentLength = fileContents.Length; 

Stream requestStream = request.GetRequestStream(); 
requestStream.Write(fileContents, 0, fileContents.Length); 
requestStream.Close(); 

FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
response.Close(); 

그러나 이것은 수동 모드를 기본값으로 사용하는 것; ftp 클라이언트가 명령 행과 동일한 방식으로 활성 모드를 사용하여 업로드하도록 강제 할 수 있습니까?

+0

. Net Reflector가 답변을 알려줍니다. :) MSDN 문서는 훨씬 쉽습니다. http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest_members(v=VS.80).aspx –

답변

22

예, UsePassive 속성을 false로 설정하십시오.

request.UsePassive = false; 
+1

Doh. 똑똑한 기본값보다 작습니다. 그리고 거기에'Mode' 속성/열거 형을 찾고있었습니다. –

+0

때로는 해결책이 너무 간단하여 보았을 때 다소 바보가 느껴질 수도 있습니다. 이것은 내가 다소 어리 석음을 느낀 그 시대의 하나이다.) – Squazz

관련 문제