FtpWebRequest::Timeout Property
Gets or sets the number of milliseconds to wait for a request.
Assembly: System (in System.dll)
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | The value specified is less than zero and is not Infinite. |
| InvalidOperationException | 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(); 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; }
Available since 2.0