Freigeben über


FtpWebRequest.Timeout Eigenschaft

Definition

Ruft die Wartezeit in Millisekunden für eine Anforderung ab oder legt diese fest.

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

Eigenschaftswert

Ein Int32 -Wert, der die Anzahl von Millisekunden enthält, die gewartet werden soll, bis ein Anforderungs-Zeitüberschreitung aufgetreten ist. Der Standardwert ist Infinite.

Ausnahmen

Der angegebene Wert ist kleiner als null (0) und ungleich Infinite.

Für diese Eigenschaft wurde ein neuer Wert für eine Anforderung angegeben, die bereits ausgeführt wird.

Beispiele

Im folgenden Codebeispiel wird diese Eigenschaft festgelegt.

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

Hinweise

Um einen unendlichen Wert anzugeben, legen Sie die Timeout -Eigenschaft auf Infinite (-1) fest. Dies ist der Standardwert.

Timeout ist die Anzahl von Millisekunden, die eine synchrone Anforderung mit der GetResponse -Methode auf eine Antwort wartet und die GetRequestStream Methode auf einen Stream wartet. Wenn eine Ressource nicht innerhalb des Timeoutzeitraums antwortet, löst die Anforderung eine aus WebException , wobei die Status -Eigenschaft auf Timeoutfestgelegt ist.

Eine Änderung Timeout nach dem Aufruf der GetRequestStreamMethode , BeginGetRequestStream, GetResponseoder BeginGetResponse verursacht eine InvalidOperationException Ausnahme.

Bei einer DNS-Abfrage (Domain Name System) kann es bis zu 15 Sekunden dauern, bis sie zurückgegeben oder ein Timeout ausgeführt wird. Wenn Ihre Anforderung einen Hostnamen enthält, der eine Auflösung erfordert und Sie auf einen Wert von weniger als 15 Sekunden festgelegt Timeout haben, kann es 15 Sekunden oder mehr dauern, bis ein WebException ausgelöst wird, um ein Timeout für Ihre Anforderung anzuzeigen.

Gilt für:

Weitere Informationen