Partilhar via


FtpWebRequest.Timeout Propriedade

Definição

Obtém ou define o número de milissegundos de espera de uma solicitação.

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 da propriedade

Um Int32 valor que contém o número de milissegundos a aguardar antes que uma solicitação limite. O valor padrão é Infinite.

Exceções

O valor especificado é menor que zero e não é Infinite.

Um novo valor foi especificado para essa propriedade referente a uma solicitação já em andamento.

Exemplos

O exemplo de código a seguir define essa propriedade.

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

Comentários

Para especificar um valor infinito, defina a Timeout propriedade como Infinite (-1). Este é o valor padrão.

Timeout é o número de milissegundos que uma solicitação síncrona feita com o GetResponse método aguarda uma resposta e que o GetRequestStream método aguarda um fluxo. Se um recurso não responder dentro do período de tempo limite, a solicitação gerará um WebException com a Status propriedade definida como Timeout.

Alterar Timeout depois de chamar o GetRequestStreammétodo , BeginGetRequestStreamGetResponse, ou BeginGetResponse causa uma exceçãoInvalidOperationException.

Uma consulta DNS (Sistema de Nomes de Domínio) pode levar até 15 segundos para retornar ou atingir o tempo limite. Se sua solicitação contiver um nome de host que exija resolução e você definir Timeout como um valor inferior a 15 segundos, pode levar 15 segundos ou mais até que um WebException seja gerado para indicar um tempo limite em sua solicitação.

Aplica-se a

Confira também