Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe FtpWebRequest

 

Data di pubblicazione: ottobre 2016

Implementa un client File Transfer Protocol (FTP).

Spazio dei nomi:   System.Net
Assembly:  System (in System.dll)

System.Object
  System.MarshalByRefObject
    System.Net.WebRequest
      System.Net.FtpWebRequest

public sealed class FtpWebRequest : WebRequest

NomeDescrizione
System_CAPS_pubpropertyAuthenticationLevel

Ottiene o imposta i valori che indicano il livello di autenticazione e di rappresentazione usati per la richiesta.(Ereditato da WebRequest.)

System_CAPS_pubpropertyCachePolicy

Ottiene o imposta i criteri della cache per la richiesta.(Ereditato da WebRequest.)

System_CAPS_pubpropertyClientCertificates

Ottiene o imposta i certificati usati per stabilire una connessione crittografata al server FTP.

System_CAPS_pubpropertyConnectionGroupName

Ottiene o imposta il nome del gruppo di connessione che contiene il punto di servizio usato per inviare la richiesta corrente.(Esegue l'override di WebRequest.ConnectionGroupName.)

System_CAPS_pubpropertyContentLength

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Ottiene o imposta un valore ignorato dalla classe FtpWebRequest.(Esegue l'override di WebRequest.ContentLength.)

System_CAPS_pubpropertyContentOffset

Ottiene o imposta un offset di byte nel file che viene scaricato da questa richiesta.

System_CAPS_pubpropertyContentType

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Genera sempre un'eccezione NotSupportedException.(Esegue l'override di WebRequest.ContentType.)

System_CAPS_pubpropertyCreatorInstance

Obsoleto.Quando ne viene eseguito l'override in una classe discendente, ottiene l'oggetto factory derivato dalla classe IWebRequestCreate usato per creare l'oggetto WebRequest di cui è stata creata un'istanza per effettuare la richiesta all'URI specificato.(Ereditato da WebRequest.)

System_CAPS_pubpropertyCredentials

Ottiene o imposta le credenziali usate per comunicare con il server FTP.(Esegue l'override di WebRequest.Credentials.)

System_CAPS_pubpropertySystem_CAPS_staticDefaultCachePolicy

Definisce i criteri della cache predefiniti per tutte le richieste FTP.

System_CAPS_pubpropertyEnableSsl

Ottiene o imposta una struttura Boolean che specifica che deve essere usata una connessione SSL.

System_CAPS_pubpropertyHeaders

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Ottiene un oggetto WebHeaderCollection vuoto.(Esegue l'override di WebRequest.Headers.)

System_CAPS_pubpropertyImpersonationLevel

Ottiene o imposta il livello di rappresentazione per la richiesta corrente.(Ereditato da WebRequest.)

System_CAPS_pubpropertyKeepAlive

Ottiene o imposta un valore Boolean che specifica se la connessione di controllo sul server FTP viene chiusa dopo il completamento della richiesta

System_CAPS_pubpropertyMethod

Ottiene o imposta il comando da inviare al server FTP.(Esegue l'override di WebRequest.Method.)

System_CAPS_pubpropertyPreAuthenticate

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Genera sempre un'eccezione NotSupportedException.(Esegue l'override di WebRequest.PreAuthenticate.)

System_CAPS_pubpropertyProxy

Ottiene o imposta il proxy usato per comunicare con il server FTP.(Esegue l'override di WebRequest.Proxy.)

System_CAPS_pubpropertyReadWriteTimeout

Ottiene o imposta un timeout durante la lettura o la scrittura in un flusso.

System_CAPS_pubpropertyRenameTo

Ottiene o imposta il nuovo nome di un file che viene rinominato.

System_CAPS_pubpropertyRequestUri

Ottiene l'URI richiesto da questa istanza.(Esegue l'override di WebRequest.RequestUri.)

System_CAPS_pubpropertyServicePoint

Ottiene l'oggetto ServicePoint usato per la connessione al server FTP.

System_CAPS_pubpropertyTimeout

Ottiene o imposta il numero di millisecondi di attesa per una richiesta.(Esegue l'override di WebRequest.Timeout.)

System_CAPS_pubpropertyUseBinary

Ottiene o imposta un valore Boolean che specifica il tipo di dati per il trasferimento di file.

System_CAPS_pubpropertyUseDefaultCredentials

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Genera sempre un'eccezione NotSupportedException.(Esegue l'override di WebRequest.UseDefaultCredentials.)

System_CAPS_pubpropertyUsePassive

Ottiene o imposta il comportamento del processo di trasferimento dei dati di un'applicazione client.

NomeDescrizione
System_CAPS_pubmethodAbort()

Termina un'operazione FTP asincrona.(Esegue l'override di WebRequest.Abort().)

System_CAPS_pubmethodBeginGetRequestStream(AsyncCallback, Object)

Avvia l'apertura asincrona del flusso del contenuto di una richiesta per la scrittura.(Esegue l'override di WebRequest.BeginGetRequestStream(AsyncCallback, Object).)

System_CAPS_pubmethodBeginGetResponse(AsyncCallback, Object)

Inizia l'invio di una richiesta e la ricezione di una risposta da un server FTP in modo asincrono.(Esegue l'override di WebRequest.BeginGetResponse(AsyncCallback, Object).)

System_CAPS_pubmethodCreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni rilevanti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.(Ereditato da MarshalByRefObject.)

System_CAPS_pubmethodEndGetRequestStream(IAsyncResult)

Termina un'operazione asincrona in sospeso avviata con il metodo BeginGetRequestStream.(Esegue l'override di WebRequest.EndGetRequestStream(IAsyncResult).)

System_CAPS_pubmethodEndGetResponse(IAsyncResult)

Termina un'operazione asincrona in sospeso avviata con il metodo BeginGetResponse.(Esegue l'override di WebRequest.EndGetResponse(IAsyncResult).)

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetLifetimeService()

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.(Ereditato da MarshalByRefObject.)

System_CAPS_pubmethodGetRequestStream()

Recupera il flusso usato per caricare i dati su un server FTP.(Esegue l'override di WebRequest.GetRequestStream().)

System_CAPS_pubmethodGetRequestStreamAsync()

Quando ne viene eseguito l'override in una classe discendente, restituisce un oggetto Stream per la scrittura dei dati nella risorse Internet come operazione asincrona.(Ereditato da WebRequest.)

System_CAPS_pubmethodGetResponse()

Restituisce la risposta del server FTP.(Esegue l'override di WebRequest.GetResponse().)

System_CAPS_pubmethodGetResponseAsync()

Quando ne viene eseguito l'override in una classe discendente, restituisce una risposta a una richiesta Internet come operazione asincrona.(Ereditato da WebRequest.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodInitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.(Ereditato da MarshalByRefObject.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

NomeDescrizione
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Quando ne viene eseguito l'override in una classe discendente, popola un'istanza di SerializationInfo con i dati necessari per serializzare WebRequest.(Ereditato da WebRequest.)

Per ottenere un'istanza di FtpWebRequest, utilizzare il Create metodo. È inoltre possibile utilizzare la WebClient classe per caricare e scaricare informazioni da un server FTP. Utilizzando uno di questi approcci, quando si specifica una risorsa di rete che utilizza lo schema FTP (ad esempio, "ftp://contoso.com") la FtpWebRequest classe fornisce la possibilità di interagire a livello di codice con i server FTP.

L'URI può essere relativo o assoluto. Se l'URI è nel formato "ftp://contoso.com/%2fpath" (% 2f è una sequenza di escape '/'), l'URI sarà assoluto e la directory corrente è /path. Se, tuttavia, l'URI è nel formato "ftp://contoso.com/path", innanzitutto .NET Framework accede al server FTP (utilizzando il nome utente e la password impostata il Credentials proprietà), la directory corrente viene impostato su <UserLoginDirectory>/path.

È necessario disporre di un nome utente valido e la password per il server o il server deve consentire l'accesso anonimo. È possibile specificare le credenziali utilizzate per connettersi al server impostando la Credentials proprietà oppure è possibile includerli nel UserInfo parte dell'URI passato al Create metodo. Se si include UserInfo informazioni nell'URI, la Credentials proprietà è impostata su una nuova credenziale di rete con le informazioni di nome e la password utente specificato.

System_CAPS_cautionAttenzione

A meno che il EnableSsl è true, tutti i dati e i comandi, incluse le informazioni di nome e la password utente, vengono inviati al server in testo non crittografato. Chiunque monitoraggio del traffico di rete può visualizzare le credenziali e utilizzarle per connettersi al server. Se ci si connette a un server FTP che richiede le credenziali e supporta Secure Sockets Layer (SSL), è necessario impostare EnableSsl a true.

È necessario disporre di WebPermission per accedere alla risorsa FTP; in caso contrario, un SecurityException viene generata un'eccezione.

Specificare il comando FTP da inviare al server mediante l'impostazione di Method un valore definito nella proprietà di WebRequestMethods.Ftp struttura. Per trasmettere dati di testo, modificare il UseBinary proprietà rispetto al valore predefinito (true) a false. Per informazioni dettagliate e restrizioni, vedere Method.

Quando si utilizza un FtpWebRequest oggetto per caricare un file a un server, è necessario scrivere il contenuto del file per il flusso di richiesta ottenuto chiamando il GetRequestStream metodo o le relative controparti asincrone, il BeginGetRequestStream e EndGetRequestStream metodi. È necessario scrivere nel flusso e chiudere il flusso prima di inviare la richiesta.

Le richieste vengono inviate al server tramite la chiamata di GetResponse metodo o le relative controparti asincrone, il BeginGetResponse e EndGetResponse metodi. Al termine dell'operazione richiesta, un FtpWebResponse viene restituito l'oggetto. Il FtpWebResponse oggetto fornisce lo stato dell'operazione e i dati scaricati dal server.

È possibile impostare un valore di timeout per la lettura o scrittura al server tramite il ReadWriteTimeout proprietà. Se il periodo di timeout viene superato, la chiamata al metodo genera un WebException con WebExceptionStatus impostato su Timeout.

Quando si scarica un file da un server FTP, se il comando ha esito positivo, il contenuto del file di richiesta è disponibile nel flusso dell'oggetto risposta. È possibile accedere a questo flusso chiamando il GetResponseStream metodo. Per altre informazioni, vedere FtpWebResponse.

Se il Proxy proprietà è impostata, sia direttamente o in un file di configurazione, le comunicazioni con il server FTP vengono effettuate tramite il proxy specificato. Se il proxy specificato è un proxy HTTP, solo il DownloadFile, ListDirectory, e ListDirectoryDetails sono supportati i comandi.

Solo il contenuto binario scaricato viene memorizzato nella cache; vale a dire il contenuto ricevuto utilizzando il DownloadFile comando con il UseBinary impostata su true.

Più FtpWebRequestil riutilizzo delle connessioni esistenti, se possibile.

Per ulteriori informazioni sul protocollo FTP, vedere RFC 959, "File Transfer Protocol," disponibile all'indirizzo http://www.rfc-editor.org/.

Esempio di codice seguente viene illustrata l'eliminazione di un file da un server FTP.

public static bool DeleteFileOnServer(Uri serverUri)
{
    // The serverUri parameter should use the ftp:// scheme.
    // It contains the name of the server file that is to be deleted.
    // Example: ftp://contoso.com/someFile.txt.
    // 

    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.DeleteFile;

    FtpWebResponse response = (FtpWebResponse) request.GetResponse();
    Console.WriteLine("Delete status: {0}",response.StatusDescription);  
    response.Close();
    return true;
}

Esempio di codice seguente viene illustrato il download di un file da un server FTP utilizzando la WebClient classe.

public static bool DisplayFileFromServer(Uri serverUri)
{
    // The serverUri parameter should start with the ftp:// scheme.
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    WebClient request = new WebClient();

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    try 
    {
        byte [] newFileData = request.DownloadData (serverUri.ToString());
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        Console.WriteLine(fileString);
    }
    catch (WebException e)
    {
        Console.WriteLine(e.ToString());
    }
    return true;
}

Esempio di codice seguente viene illustrato l'utilizzo di operazioni asincrone per caricare un file a un server FTP.

using System;
using System.Net;
using System.Threading;

using System.IO;
namespace Examples.System.Net
{
    public class FtpState
    {
        private ManualResetEvent wait;
        private FtpWebRequest request;
        private string fileName;
        private Exception operationException = null;
        string status;

        public FtpState()
        {
            wait = new ManualResetEvent(false);
        }

        public ManualResetEvent OperationComplete
        {
            get {return wait;}
        }

        public FtpWebRequest Request
        {
            get {return request;}
            set {request = value;}
        }

        public string FileName
        {
            get {return fileName;}
            set {fileName = value;}
        }
        public Exception OperationException
        {
            get {return operationException;}
            set {operationException = value;}
        }
        public string StatusDescription
        {
            get {return status;}
            set {status = value;}
        }
    }
    public class AsynchronousFtpUpLoader
    {  
        // Command line arguments are two strings:
        // 1. The url that is the name of the file being uploaded to the server.
        // 2. The name of the file on the local machine.
        //
        public static void Main(string[] args)
        {
            // Create a Uri instance with the specified URI string.
            // If the URI is not correctly formed, the Uri constructor
            // will throw an exception.
            ManualResetEvent waitObject;

            Uri target = new Uri (args[0]);
            string fileName = args[1];
            FtpState state = new FtpState();
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example uses anonymous logon.
            // The request is anonymous by default; the credential does not have to be specified. 
            // The example specifies the credential only to
            // control how actions are logged on the server.

            request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

            // Store the request in the object that we pass into the
            // asynchronous operations.
            state.Request = request;
            state.FileName = fileName;

            // Get the event to wait on.
            waitObject = state.OperationComplete;

            // Asynchronously get the stream for the file contents.
            request.BeginGetRequestStream(
                new AsyncCallback (EndGetStreamCallback), 
                state
            );

            // Block the current thread until all operations are complete.
            waitObject.WaitOne();

            // The operations either completed or threw an exception.
            if (state.OperationException != null)
            {
                throw state.OperationException;
            }
            else
            {
                Console.WriteLine("The operation completed - {0}", state.StatusDescription);
            }
        }
        private static void EndGetStreamCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;

            Stream requestStream = null;
            // End the asynchronous call to get the request stream.
            try
            {
                requestStream = state.Request.EndGetRequestStream(ar);
                // 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(state.FileName);
                do
                {
                    readBytes = stream.Read(buffer, 0, bufferLength);
                    requestStream.Write(buffer, 0, readBytes);
                    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();
                // Asynchronously get the response to the upload request.
                state.Request.BeginGetResponse(
                    new AsyncCallback (EndGetResponseCallback), 
                    state
                );
            } 
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine("Could not get the request stream.");
                state.OperationException = e;
                state.OperationComplete.Set();
                return;
            }

        }

        // The EndGetResponseCallback method  
        // completes a call to BeginGetResponse.
        private static void EndGetResponseCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;
            FtpWebResponse response = null;
            try 
            {
                response = (FtpWebResponse) state.Request.EndGetResponse(ar);
                response.Close();
                state.StatusDescription = response.StatusDescription;
                // Signal the main application thread that 
                // the operation is complete.
                state.OperationComplete.Set();
            }
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine ("Error getting response.");
                state.OperationException = e;
                state.OperationComplete.Set();
            }
        }
    }
}

WebPermission

for accessing the resource referenced by this request. Associated enumeration: F:System.Net.NetworkAccess.Connect.

.NET Framework
Disponibile da 2.0

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: