FtpWebRequest.Timeout Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İstek için beklenen milisaniye sayısını alır veya ayarlar.
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
Özellik Değeri
İstek Int32 zaman aşımına uğramadan önce bekleyebilecek milisaniye sayısını içeren bir değer. Varsayılan değer şeklindedir Infinite.
Özel durumlar
Belirtilen değer sıfırdan küçük ve değil Infinite.
Devam etmekte olan bir istek için bu özellik için yeni bir değer belirtildi.
Örnekler
Aşağıdaki kod örneği bu özelliği ayarlar.
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;
}
Açıklamalar
Sonsuz bir değer belirtmek için özelliğini Infinite (-1) olarak ayarlayınTimeout. Varsayılan değer budur.
Timeout , yöntemiyle GetResponse yapılan zaman uyumlu isteğin yanıt beklediği ve GetRequestStream yöntemin bir akışı beklediği milisaniye sayısıdır. Bir kaynak zaman aşımı süresi içinde yanıt vermezse, istek özelliği olarak Timeoutayarlanmış bir WebExceptionStatus oluşturur.
, , GetResponseBeginGetRequestStreamveya BeginGetResponse yöntemi çağrıldıktan GetRequestStreamsonra değiştirilmesi Timeout özel duruma InvalidOperationException neden olur.
Etki Alanı Adı Sistemi (DNS) sorgusu döndürülmesi veya zaman aşımına uğrarsa 15 saniye kadar sürebilir. İsteğiniz çözüm gerektiren bir ana bilgisayar adı içeriyorsa ve 15 saniyeden kısa bir değere ayarlarsanız Timeout , isteğinizin zaman aşımını belirtmesi için bir WebException oluşturma işlemi 15 saniye veya daha uzun sürebilir.