FtpWebRequest.UsePassive 속성

정의

클라이언트 애플리케이션의 데이터 전송 프로세스에 대한 동작을 가져오거나 설정합니다.

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

속성 값

클라이언트 애플리케이션의 데이터 전송 프로세스에서 데이터 포트의 연결을 수신 대기할 경우 false이고, 클라이언트에서 데이터 포트의 연결을 시작해야 할 경우에는 true입니다. 기본값은 true입니다.

예외

이미 진행 중인 요청의 이 속성에 새 값이 지정된 경우

예제

다음 코드 예제에서는 검색 하 고 지정 된 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);
}

설명

속성을 로 UsePassive 설정하면 true "PASV" 명령이 서버에 전송됩니다. 이 명령은 서버가 데이터 포트에서 수신 대기하고 전송 명령을 수신할 때 연결을 시작하는 대신 연결을 대기하도록 요청합니다.

를 사용하여 UsePassive지정된 동작에 대한 설명은 RFC 959: "파일 전송 프로토콜", 섹션 3.2: "데이터 연결 설정" 및 섹션 4.1.2: "매개 변수 명령 전송"을 참조하세요.

, , GetResponse또는 메서드를 호출한 GetRequestStream후 를 변경 UsePassive 하면 예외가 발생합니다InvalidOperationException.BeginGetResponseBeginGetRequestStream

가 로 true설정된 경우 UsePassive FTP 서버는 파일 크기를 보내지 않을 수 있으며 다운로드 진행률은 항상 0일 수 있습니다. 가 로 false설정된 경우 UsePassive 방화벽은 경고를 발생시키고 파일 다운로드를 차단할 수 있습니다.

적용 대상

추가 정보