2011-03-22 17 views
10

Debido a algunos problemas de firewall, necesitamos hacer FTP utilizando el modo "activo" (es decir, no iniciando un comando PASV).¿Es posible hacer FTP en modo "Activo" usando FtpWebRequest?

Actualmente, estamos utilizando el código en la línea de:

// 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(); 

Pero esto parece utilizará por defecto el modo pasivo; ¿Podemos influir en esto para forzarlo a cargar utilizando el modo activo (de la misma manera que lo hace el cliente de línea de comando ftp)?

+0

.Net Reflector le dirá la respuesta. :) Sin embargo, son mucho más fáciles los documentos de MSDN. http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest_members(v=VS.80).aspx –

Respuesta

22

Sí, establezca la propiedad UsePassive en false.

request.UsePassive = false; 
+1

Doh. Menos que brillante predeterminado eso. Y estaba yo buscando una propiedad/enum 'Mode '. –

+0

A veces, la solución es tan simple que te sientes un poco tonto cuando lo ves. Este es uno de esos momentos en los que me siento un poco tonto;) – Squazz

Cuestiones relacionadas