Share via


Come usare codice gestito (C#) per creare un semplice provider di home directory FTP

di Robert McMurray

Microsoft ha creato un nuovo servizio FTP completamente riscritto per Windows Server® 2008. Questo nuovo servizio FTP incorpora molte nuove funzionalità che consentono agli autori Web di pubblicare il contenuto più facilmente rispetto a prima e offre agli amministratori Web più opzioni di sicurezza e distribuzione.

Il nuovo servizio FTP 7.5 supporta l'estendibilità che consente di estendere la funzionalità predefinita inclusa nel servizio FTP. In particolare, FTP 7.5 supporta la creazione di provider di autenticazione e autorizzazione personalizzati. È anche possibile creare provider per la registrazione FTP personalizzata e determinare le informazioni della home directory per gli utenti FTP.

Questa procedura dettagliata illustra la procedura per usare il codice gestito per creare un semplice provider di home directory FTP.

Prerequisiti

Per completare le procedure descritte in questo articolo sono necessari gli elementi seguenti:

  1. IIS 7.0 o versione successiva deve essere installato nel server Windows Server 2008 e deve essere installato anche Gestione Internet Information Services (IIS).

  2. È necessario installare il nuovo servizio FTP 7.5.

  3. È necessario creare una cartella radice per la pubblicazione FTP.

  4. È necessario usare Visual Studio 2008.

    Nota

    Se si usa una versione precedente di Visual Studio, alcuni dei passaggi di questa procedura dettagliata potrebbero non essere corretti.

  5. È necessario creare una home directory per ogni utente; l'esempio di codice usa C:\Ftpusers\%*UserName*%, ma è possibile modificarlo in base alle esigenze.

Passaggio 1: Configurare l'ambiente del progetto

In questo passaggio verrà creato un progetto in Visual Studio 2008 per il provider demo.

  1. Aprire Microsoft Visual Studio 2008.

  2. Fare clic sul menu File , quindi su Nuovo, quindi su Progetto.

  3. Nella finestra di dialogo Nuovo progetto:

    • Scegliere Visual C# come tipo di progetto.
    • Scegliere Libreria di classi come modello.
    • Digitare FtpHomeDirectoryDemo come nome del progetto.
    • Fare clic su OK.
  4. Quando si apre il progetto, aggiungere un percorso di riferimento alla libreria di estendibilità FTP:

    • Fare clic su Progetto e quindi su FtpHomeDirectoryDemo Proprietà.

    • Fare clic sulla scheda Percorsi di riferimento.

    • Immettere il percorso dell'assembly di estendibilità FTP per la versione di Windows, dove C: è l'unità del sistema operativo:

      • Per Windows Server 2008 e Windows Vista: C:\Windows\assembly\GAC\_MSIL\Microsoft.Web.FtpServer\7.5.0.0\_\_31bf3856ad364e35
      • Per Windows 7: C:\Program Files\Reference Assemblies\Microsoft\IIS
    • Fare clic su Aggiungi cartella.

  5. Aggiungere una chiave con nome sicuro al progetto:

    • Fare clic su Progetto e quindi su FtpHomeDirectoryDemo Proprietà.
    • Fare clic sulla scheda Firma .
    • Selezionare la casella di controllo Firma assembly .
    • Scegliere <Nuovo> dall'elenco a discesa Nome chiave complessa.
    • Immettere FtpHomeDirectoryDemoKey per il nome del file di chiave.
    • Se lo si desidera, immettere una password per il file di chiave; in caso contrario, deselezionare la casella di controllo Proteggi il file di chiave con una password .
    • Fare clic su OK.
  6. Facoltativo: è possibile aggiungere un evento di compilazione personalizzato per aggiungere automaticamente la DLL alla Global Assembly Cache (GAC) nel computer di sviluppo:

    • Fare clic su Progetto e quindi su FtpHomeDirectoryDemo Proprietà.

    • Fare clic sulla scheda Eventi di compilazione.

    • Immettere quanto segue nella finestra di dialogo Riga di comando dell'evento post-compilazione:

      net stop ftpsvc
      call "%VS90COMNTOOLS%\vsvars32.bat">null
      gacutil.exe /if "$(TargetPath)"
      net start ftpsvc
      
  7. Salvare il progetto.

Passaggio 2: Creare la classe Extensibility

In questo passaggio si implementerà l'interfaccia di estendibilità per il provider demo.

  1. Aggiungere un riferimento alla libreria di estendibilità FTP per il progetto:

    • Fare clic su Progetto e quindi su Aggiungi riferimento
    • Nella scheda .NET fare clic su Microsoft.Web.FtpServer.
    • Fare clic su OK.
  2. Aggiungere un riferimento a System.Web per il progetto:

    • Fare clic su Progetto e quindi su Aggiungi riferimento
    • Nella scheda .NET fare clic su System.Web.
    • Fare clic su OK.
  3. Aggiungere il codice per la classe di autenticazione:

    • In Esplora soluzioni fare doppio clic sul file Class1.cs.

    • Rimuovere il codice esistente.

    • Incollare il codice seguente nell'editor:

      using System;
      using Microsoft.Web.FtpServer;
       
      namespace FtpHomeDirectory
      {
          public class FtpHomeDirDemo : BaseProvider,
              IFtpHomeDirectoryProvider
          {
              string IFtpHomeDirectoryProvider.GetUserHomeDirectoryData(
                  string sessionId,
                  string siteName,
                  string userName)
              {
                  // Note: You would add your own custom logic here.
                  // Return the user's home directory based on their user name.
                  return @"C:\Ftpusers\" + userName;
              }
          }
      }
      
  4. Salvare e compilare il progetto.

Nota

Se non sono stati usati i passaggi facoltativi per registrare gli assembly nella GAC, sarà necessario copiare manualmente gli assembly nel computer IIS e aggiungere gli assembly alla GAC usando lo strumento Gacutil.exe. Per altre informazioni, vedere l'articolo Gacutil.exe (Strumento Global Assembly Cache).

Passaggio 3: Aggiungere il provider home directory a FTP

In questo passaggio si aggiungerà il provider demo al servizio FTP e al sito Web predefinito.

  1. Determinare le informazioni sull'assembly per il provider di estendibilità:

    • In Esplora risorse aprire il C:\Windows\assembly percorso, dove C: è l'unità del sistema operativo.
    • Individuare l'assembly FtpHomeDirectoryDemo .
    • Fare clic con il pulsante destro del mouse sull'assembly e quindi scegliere Proprietà.
    • Copiare il valore Culture, ad esempio Neutral.
    • Copiare il numero di versione , ad esempio 1.0.0.0.
    • Copiare il valore del token di chiave pubblica, ad esempio 426f62526f636b73.
    • Fare clic su Annulla.
  2. Aggiungere il provider di estendibilità all'elenco globale dei provider FTP:

    • Aprire Gestione Internet Information Services (IIS).

    • Fare clic sul nome del computer nel riquadro Connessione ions.

    • Fare doppio clic su Autenticazione FTP nella finestra principale.

    • Fare clic su Provider personalizzati nel riquadro Azioni.

    • Fare clic su Registra.

    • Immettere FtpHomeDirectoryDemo come nome del provider.

    • Fare clic su Provider gestito (.NET).

    • Immettere le informazioni sull'assembly per il provider di estendibilità usando le informazioni copiate in precedenza. Ad esempio:

      FtpHomeDirectory.FtpHomeDirDemo,FtpHomeDirectoryDemo,version=1.0.0.0,Culture=neutral,PublicKeyToken=426f62526f636b73
      
    • Fare clic su OK.

    • Deselezionare la casella di controllo FtpHomeDirectoryDemo nell'elenco dei provider.

    • Fare clic su OK.

  3. Aggiungere il provider personalizzato a un sito:

    • Al momento non esiste un'interfaccia utente che consente di aggiungere funzionalità personalizzate a un sito, quindi è necessario usare la riga di comando seguente:

      AppCmd set site "Default Web Site" /+ftpServer.customFeatures.providers.[name='FtpHomeDirectoryDemo',enabled='true']
      
  4. Configurare l'isolamento utente per l'uso di un provider personalizzato:

    • Al momento non esiste un'interfaccia utente che consente di specificare funzionalità personalizzate per l'isolamento dell'utente, quindi è necessario usare la riga di comando seguente:

      AppCmd set site "Default Web Site" /ftpServer.userIsolation.mode:Custom
      

Riepilogo

In questa procedura dettagliata si è appreso come:

  • Creare un progetto in Visual Studio 2008 per un provider di home directory FTP personalizzato.
  • Implementare l'interfaccia di estendibilità per le ricerche personalizzate della home directory FTP.
  • Aggiungere un provider di home directory personalizzato al servizio FTP.

Quando gli utenti si connettono al sito FTP, il servizio FTP imposta la home directory di ogni utente sul percorso specificato nel provider demo.