FtpWebRequest.Timeout Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает количество миллисекунд для ожидания запроса.
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
Значение свойства
Значение Int32 типа , содержащее время ожидания в миллисекундах до истечения времени ожидания запроса. Значение по умолчанию — Infinite.
Исключения
Указанное значение меньше нуля и не равно Infinite.
Для этого свойства задано новое значение для уже выполняющегося запроса.
Примеры
В следующем примере кода задается это свойство.
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;
}
Комментарии
Чтобы указать бесконечное значение, присвойте свойству Timeout значение Infinite (-1). Это значение по умолчанию.
Timeout — это количество миллисекунд, в течение которых синхронный запрос, выполненный GetResponse с помощью метода, ожидает ответа, а GetRequestStream метод ожидает потока. Если ресурс не отвечает в течение периода ожидания, запрос создает с свойством WebExceptionStatus , для свойства , которое имеет значение Timeout.
Изменение Timeout после вызова GetRequestStreamметода , BeginGetRequestStream, GetResponseили BeginGetResponse вызывает InvalidOperationException исключение.
Для возврата запроса системы доменных имен (DNS) может потребоваться до 15 секунд. Если запрос содержит имя узла, требующее разрешения, и для него задано Timeout значение менее 15 секунд, для указания времени ожидания запроса может потребоваться 15 секунд или более WebException .