Bagikan melalui


FtpWebRequest.Timeout Properti

Definisi

Mendapatkan atau mengatur jumlah milidetik untuk menunggu permintaan.

public:
 virtual property int Timeout { int get(); void set(int value); };
public override int Timeout { get; set; }
member this.Timeout : int with get, set
Public Overrides Property Timeout As Integer

Nilai Properti

Nilai Int32 yang berisi jumlah milidetik untuk menunggu sebelum waktu permintaan habis. Nilai defaultnya adalah Infinite.

Pengecualian

Nilai yang ditentukan kurang dari nol dan bukan Infinite.

Nilai baru ditentukan untuk properti ini untuk permintaan yang sudah berlangsung.

Contoh

Contoh kode berikut mengatur properti ini.

static bool UploadUniqueFileOnServer( Uri^ serverUri, String^ fileName )
{
   // The URI described by serverUri should use the ftp:// scheme.
   // It contains the name of the directory on the server.
   // Example: ftp://contoso.com.
   // 
   // The fileName parameter identifies the file containing the data to be uploaded.
   if ( serverUri->Scheme != Uri::UriSchemeFtp )
   {
      return false;
   }

   // Get the object used to communicate with the server.
   FtpWebRequest^ request = dynamic_cast<FtpWebRequest^>(WebRequest::Create( serverUri ));
   request->Method = WebRequestMethods::Ftp::UploadFileWithUniqueName;

   // Don't set a time limit for the operation to complete.
   request->Timeout = System::Threading::Timeout::Infinite;

   // Copy the file contents to the request stream.
   const int bufferLength = 2048;
   array<Byte>^buffer = gcnew array<Byte>(bufferLength);
   int count = 0;
   int readBytes = 0;
   FileStream^ stream = File::OpenRead( fileName );
   Stream^ requestStream = request->GetRequestStream();
   do
   {
      readBytes = stream->Read( buffer, 0, bufferLength );
      requestStream->Write( buffer, 0, bufferLength );
      count += readBytes;
   }
   while ( readBytes != 0 );

   Console::WriteLine( "Writing {0} bytes to the stream.", count );
   
   // IMPORTANT: Close the request stream before sending the request.
   requestStream->Close();
   FtpWebResponse^ response = dynamic_cast<FtpWebResponse^>(request->GetResponse());
   Console::WriteLine( "Upload status: {0}, {1}", response->StatusCode, response->StatusDescription );
   Console::WriteLine( "File name: {0}", response->ResponseUri );
   response->Close();
   return true;
}
public static bool UploadUniqueFileOnServer (Uri serverUri, string fileName)
{
    // The URI described by serverUri should use the ftp:// scheme.
    // It contains the name of the directory on the server.
    // Example: ftp://contoso.com.
    //
    // The fileName parameter identifies the file containing the data to be uploaded.

    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
    request.Method = WebRequestMethods.Ftp.UploadFileWithUniqueName;
    // Set a time limit for the operation to complete.
    request.Timeout = 600000;

    // Copy the file contents to the request stream.
    const int bufferLength = 2048;
    byte[] buffer = new byte[bufferLength];
    int count = 0;
    int readBytes = 0;
    FileStream stream = File.OpenRead(fileName);
    Stream requestStream = request.GetRequestStream();
    do
    {
        readBytes = stream.Read(buffer, 0, bufferLength);
        requestStream.Write(buffer, 0, bufferLength);
        count += readBytes;
    }
    while (readBytes != 0);

    Console.WriteLine ("Writing {0} bytes to the stream.", count);
    // IMPORTANT: Close the request stream before sending the request.
    requestStream.Close();
    FtpWebResponse response = (FtpWebResponse) request.GetResponse();
    Console.WriteLine("Upload status: {0}, {1}",response.StatusCode, response.StatusDescription);
    Console.WriteLine ("File name: {0}", response.ResponseUri);
    response.Close();
    return true;
}

Keterangan

Untuk menentukan nilai tak terbatas, atur properti ke TimeoutInfinite (-1). Ini adalah nilai default.

Timeout adalah jumlah milidetik bahwa permintaan sinkron yang dibuat dengan GetResponse metode menunggu respons dan bahwa GetRequestStream metode menunggu aliran. Jika sumber daya tidak merespons dalam periode waktu habis, permintaan akan melempar dengan WebException properti yang Status diatur ke Timeout.

Mengubah Timeout setelah memanggil GetRequestStreammetode , BeginGetRequestStream, GetResponse, atau BeginGetResponse menyebabkan InvalidOperationException pengecualian.

Kueri Sistem Nama Domain (DNS) mungkin membutuhkan waktu hingga 15 detik untuk kembali atau kehabisan waktu. Jika permintaan Anda berisi nama host yang memerlukan resolusi dan Anda mengatur Timeout ke nilai kurang dari 15 detik, mungkin perlu waktu 15 detik atau lebih sebelum WebException dilemparkan untuk menunjukkan waktu habis pada permintaan Anda.

Berlaku untuk

Lihat juga