FtpWebRequest.UsePassive Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el comportamiento del proceso de transferencia de datos de una aplicación cliente.
public:
property bool UsePassive { bool get(); void set(bool value); };
public bool UsePassive { get; set; }
member this.UsePassive : bool with get, set
Public Property UsePassive As Boolean
Valor de propiedad
false
si el proceso de transferencia de datos de la aplicación cliente realiza escuchas para detectar una conexión en el puerto de datos; en caso contrario, true
si el cliente debe iniciar una conexión en el puerto de datos. El valor predeterminado es true
.
Excepciones
Se ha especificado un nuevo valor en esta propiedad para una solicitud que ya está en curso.
Ejemplos
En el ejemplo de código siguiente se recuperan y muestran los valores de propiedad de un objeto especificado FtpWebRequest .
private:
// DisplayRequestProperties prints a request's properties.
// This method should be called after the request is sent to the server.
static void DisplayRequestProperties( FtpWebRequest^ request )
{
Console::WriteLine( "User {0} {1}", request->Credentials->GetCredential( request->RequestUri, "basic" )->UserName, request->RequestUri );
Console::WriteLine( "Request: {0} {1}", request->Method, request->RequestUri );
Console::WriteLine( "Passive: {0} Keep alive: {1} Binary: {2} Timeout: {3}.", request->UsePassive, request->KeepAlive, request->UseBinary, request->Timeout == -1 ? "none" : request->Timeout.ToString() );
IWebProxy^ proxy = request->Proxy;
if ( proxy )
{
Console::WriteLine( "Proxy: {0}", proxy->GetProxy( request->RequestUri ) );
}
else
{
Console::WriteLine( "Proxy: (none)" );
}
Console::WriteLine( "ConnectionGroup: {0}", request->ConnectionGroupName == nullptr ? "none" : request->ConnectionGroupName );
Console::WriteLine( "Encrypted connection: {0}", request->EnableSsl );
Console::WriteLine("Method: {0}", request->Method);
}
// DisplayRequestProperties prints a request's properties.
// This method should be called after the request is sent to the server.
private static void DisplayRequestProperties(FtpWebRequest request)
{
Console.WriteLine("User {0} {1}",
request.Credentials.GetCredential(request.RequestUri,"basic").UserName,
request.RequestUri
);
Console.WriteLine("Request: {0} {1}",
request.Method,
request.RequestUri
);
Console.WriteLine("Passive: {0} Keep alive: {1} Binary: {2} Timeout: {3}.",
request.UsePassive,
request.KeepAlive,
request.UseBinary,
request.Timeout == -1 ? "none" : request.Timeout.ToString()
);
IWebProxy proxy = request.Proxy;
if (proxy != null)
{
Console.WriteLine("Proxy: {0}", proxy.GetProxy(request.RequestUri));
}
else
{
Console.WriteLine("Proxy: (none)");
}
Console.WriteLine("ConnectionGroup: {0}",
request.ConnectionGroupName == null ? "none" : request.ConnectionGroupName
);
Console.WriteLine("Encrypted connection: {0}",
request.EnableSsl);
Console.WriteLine("Method: {0}", request.Method);
}
Comentarios
Al establecer la UsePassive propiedad en true
, se envía el comando "PASV"
al servidor. Este comando solicita al servidor que escuche en un puerto de datos y espere una conexión en lugar de iniciar una tras recibir un comando de transferencia.
Para obtener una descripción de los comportamientos especificados mediante UsePassive, vea RFC 959: "Protocolo de transferencia de archivos", sección 3.2: "Establecer conexiones de datos" y sección 4.1.2: "Transferir comandos de parámetros".
Al cambiar UsePassive después de llamar al GetRequestStreammétodo , BeginGetRequestStreamGetResponse, o BeginGetResponse se produce una InvalidOperationException excepción.
Si UsePassive se establece true
en , es posible que el servidor FTP no envíe el tamaño del archivo y el progreso de la descarga siempre puede ser cero. Si UsePassive se establece en false
, un firewall puede generar una alerta y bloquear la descarga del archivo.