FtpWebRequest.UsePassive Właściwość

Definicja

Pobiera lub ustawia zachowanie procesu transferu danych aplikacji klienckiej.

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

Wartość właściwości

false jeśli proces transferu danych aplikacji klienckiej nasłuchuje połączenia na porcie danych; true w przeciwnym razie, jeśli klient powinien zainicjować połączenie na porcie danych. Wartość domyślna to true.

Wyjątki

Dla tej właściwości określono nową wartość dla żądania, które jest już w toku.

Przykłady

Poniższy przykład kodu pobiera i wyświetla wartości właściwości dla określonego FtpWebRequest obiektu.

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);
}

Uwagi

UsePassive Ustawienie właściwości w celu true wysłania polecenia "PASV" do serwera. To polecenie żąda od serwera nasłuchiwania na porcie danych i oczekiwania na połączenie, a nie inicjowania go po otrzymaniu polecenia transferu.

Opis zachowań określonych przy użyciu UsePassiveprogramu można znaleźć w temacie RFC 959: "File Transfer Protocol", Sekcja 3.2: "Ustanawianie Connections danych" i Sekcja 4.1.2: "Polecenia transferu parametrów".

Zmiana UsePassive po wywołaniu GetRequestStreammetody , BeginGetRequestStream, GetResponselub BeginGetResponse powoduje InvalidOperationException wyjątek.

Jeśli UsePassive jest ustawiona wartość true, serwer FTP może nie wysyłać rozmiaru pliku, a postęp pobierania zawsze może wynosić zero. Jeśli UsePassive ustawiono wartość false, zapora może zgłosić alert i zablokować pobieranie pliku.

Dotyczy

Zobacz też