FtpWebRequest.Timeout Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o número de milissegundos a aguardar 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 para uma solicitação que já está 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). Esse é 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 método GetRequestStream, BeginGetRequestStream, GetResponse ou BeginGetResponse causa uma exceção InvalidOperationException.
Uma consulta DNS (Sistema de Nomes de Domínio) pode levar até 15 segundos para retornar ou um 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, poderá levar 15 segundos ou mais até que um WebException seja gerado para indicar um tempo limite em sua solicitação.