FtpWebRequest.UsePassive Propiedad

Definición

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 trueen , 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.

Se aplica a

Consulte también