Compartir a través de


FtpWebRequest.Timeout Propiedad

Definición

Obtiene o establece el número de milisegundos de espera para una solicitud.

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

Valor de propiedad

Valor Int32 que contiene el número de milisegundos que se deben esperar antes de que se agote el tiempo de espera de una solicitud. El valor predeterminado es Infinite.

Excepciones

El valor especificado es inferior a cero y no es Infinite.

Se ha especificado un nuevo valor en esta propiedad para una solicitud que ya está en curso.

Ejemplos

En el ejemplo de código siguiente se establece esta propiedad.

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

Comentarios

Para especificar un valor infinito, establezca la Timeout propiedad Infinite en (-1). Este es el valor predeterminado.

Timeout es el número de milisegundos que realiza una solicitud sincrónica con el GetResponse método espera una respuesta y que el GetRequestStream método espera una secuencia. Si un recurso no responde dentro del período de tiempo de espera, la solicitud produce un WebException con la Status propiedad establecida en Timeout.

Al cambiar Timeout después de llamar al GetRequestStreammétodo , BeginGetRequestStreamGetResponse, o BeginGetResponse se produce una InvalidOperationException excepción.

Una consulta del Sistema de nombres de dominio (DNS) puede tardar hasta 15 segundos en devolver o agotar el tiempo de espera. Si la solicitud contiene un nombre de host que requiere resolución y se establece Timeout en un valor inferior a 15 segundos, puede tardar 15 segundos o más antes de que se produzca un WebException error para indicar un tiempo de espera en la solicitud.

Se aplica a

Consulte también