Export (0) Print
Expand All

FtpWebRequest::Timeout Property

Gets or sets the number of milliseconds to wait for a request.

Namespace:  System.Net
Assembly:  System (in System.dll)

virtual property int Timeout {
	int get () override;
	void set (int value) override;

Property Value

Type: System::Int32
An Int32 value that contains the number of milliseconds to wait before a request times out. The default value is Infinite.


The value specified is less than zero and is not Infinite.


A new value was specified for this property for a request that is already in progress.

To specify an infinite value, set the Timeout property to Infinite (-1). This is the default value.

Timeout is the number of milliseconds that a synchronous request made with the GetResponse method waits for a response and that the GetRequestStream method waits for a stream. If a resource does not respond within the time-out period, the request throws a WebException with the Status property set to Timeout.

Changing Timeout after calling the GetRequestStream, BeginGetRequestStream, GetResponse, or BeginGetResponse method causes an InvalidOperationException exception.

A Domain Name System (DNS) query may take up to 15 seconds to return or time out. If your request contains a host name that requires resolution and you set Timeout to a value less than 15 seconds, it may take 15 seconds or more before a WebException is thrown to indicate a time-out on your request.

The following code example sets this property.

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();
      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.
   FtpWebResponse^ response = dynamic_cast<FtpWebResponse^>(request->GetResponse());
   Console::WriteLine( "Upload status: {0}, {1}", response->StatusCode, response->StatusDescription );
   Console::WriteLine( "File name: {0}", response->ResponseUri );
   return true;

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
© 2015 Microsoft