Condividi tramite


Spostamento di un'applicazione ASP.NET da IIS 6.0 a IIS 7.0

Aggiornamento: novembre 2007

In questo argomento viene illustrato come spostare un'applicazione Web da Internet Information Services (IIS) 6.0 a IIS 7.0. Le applicazioni Web in IIS 7.0 possono essere configurate per l'utilizzo della modalità classica o integrata. La modalità classica mantiene la compatibilità con le versioni precedenti di IIS utilizzando un'estensione ISAPI per richiamare il runtime ASP.NET. Di norma questa opzione richiede modifiche minime o nulle alle applicazioni esistenti.

La modalità integrata di°IIS 7.0 è una pipeline di elaborazione delle richieste unificata che combina la pipeline delle richieste ASP.NET con la pipeline principale delle richieste IIS. La pipeline integrata garantisce prestazioni migliorate, fornisce modularità per la configurazione e l'amministrazione e aggiunge flessibilità per l'estensione di IIS con moduli di codice gestito. Ad esempio, è possibile definire un modulo di codice gestito nella cartella App_Code dell'applicazione Web e registrarlo per l'applicazione a tutte le richieste IIS,°incluse quelle per i file statici.

È possibile°che l'utilizzo della modalità integrata di IIS 7.0°richieda modifiche di lieve entità al file Web.config di un'applicazione. Potrebbero rendersi necessarie alcune modifiche aggiuntive se l'applicazione utilizza moduli personalizzati che implementano l'interfaccia IHttpModule.

Per informazioni generali sulla pipeline di elaborazione delle richieste nella modalità integrata di IIS 7.0, vedere Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 7.0. Quando si utilizza°IIS 7.0, è possibile eseguire le applicazioni in modalità classica e in modalità integrata side-by-side nello stesso server. Entrambe le modalità supportano .NET Framework versione 2.0 e successive. .NET Framework versione 1.1 è supportato unicamente nella modalità classica. Per ulteriori informazioni sull'aggiornamento dalle versioni precedenti di IIS a IIS 7.0, vedere Upgrading ASP.NET Applications to IIS 7.0: Differences between IIS 7.0 Integrated Mode and Classic mode (informazioni in lingua inglese).

Nota:

È possibile utilizzare le informazioni contenute in questo argomento per spostare applicazioni Web da IIS 5.x a IIS 7.0. Tuttavia, potrebbero risultare necessarie modifiche aggiuntive non trattate nel presente argomento. Per ulteriori informazioni, vedere:

Di seguito sono elencate le diverse sezioni di questo argomento:

  • File Web.config in IIS 7.0

  • Spostamento di un'applicazione Web nella modalità classica

  • Spostamento di un'applicazione Web nella modalità integrata

File Web.config in IIS 7.0

Quando si sposta un'applicazione Web ASP.NET nella modalità integrata di IIS 7.0,°è necessario aggiornare il file Web.config. IIS 7.0 include modifiche relative all'amministrazione dei file Web.config e ai tipi di impostazioni che è possibile archiviare in tali file. Le nuove impostazioni si trovano in una nuova sezione di configurazione°denominata system.webServer.

In IIS 6.0, lo snap-in MMC ASP.NET fornisce funzionalità di amministrazione correlate a IIS per la configurazione di ASP.NET. Per ulteriori informazioni, vedere Procedura dettagliata: configurazione delle applicazioni ASP.NET in IIS 6.0 tramite MMC.

In IIS 7.0 l'amministrazione delle applicazioni°ASP.NET è maggiormente integrata con l'amministrazione di IIS e non vi sono snap-in distinti. L'intera configurazione di IIS e ASP.NET, al contrario, viene eseguita tramite Gestione IIS. Poiché le informazioni di configurazione di IIS 7.0 si basano sul sistema di configurazione di .NET Framework, il file Web.config di un'applicazione eseguita in IIS 7.0 contiene sia le impostazioni di configurazione del server Web sia le impostazioni di ASP.NET. Ad esempio, in un file Web.config di un'applicazione ASP.NET eseguita in°IIS 7.0, è possibile specificare il file predefinito da restituire°quando un browser non richiede un file specifico. In IIS 6.0 e nelle versioni precedenti, tale impostazione era gestita nella metabase di IIS.

Modifica dei file Web.config

Per modificare il file Web.config di un'applicazione Web eseguita in IIS 7.0,°utilizzare una delle seguenti modalità:

  • Modifica diretta del file Web.config, utilizzando Visual Studio o Visual Web Developer oppure°un programma dell'editor di testo.

  • Tramite Gestione IIS. Per ulteriori informazioni, vedere Internet Information Services (IIS) Manager (informazioni in lingua inglese).

  • Tramite lo strumento Amministrazione sito Web di ASP.NET. Per ulteriori informazioni, vedere Strumento Amministrazione sito Web di ASP.NET.

    Nota:

    Le modifiche apportate nello strumento Amministrazione sito Web non influiscono sugli elementi di configurazione figlio nell'elemento system.webServer.

  • Tramite lo strumento della riga di comando di°IIS 7.0 (Appcmd.exe). Questa utilità consente di specificare°le impostazioni di configurazione di IIS e dell'applicazione Web nella riga di comando. Per ulteriori informazioni, vedere IIS 7.0 Command-Line Tool (informazioni in lingua inglese).

La sezione system.webServer

La sezione di configurazione system.webServer nel file Web.config specifica le impostazioni di IIS 7.0 applicate all'applicazione Web. La sezione°system.WebServer è un elemento figlio dell'elemento configuration. Per ulteriori informazioni, vedere IIS 7.0: system.webServer Section Group (IIS Settings Schema) (informazioni in lingua inglese).

Di seguito vengono riportati alcuni esempi di impostazioni del server Web che è possibile impostare nel gruppo di configurazione system.WebServer:

  • Il documento predefinito che il server Web restituisce a un client quando la richiesta non include una risorsa specifica (elemento defaultDocument).

  • Le impostazioni di compressione per le risposte (elemento httpCompression).

  • Le intestazioni personalizzate (elemento customHeaders della sezione httpProtocol).

  • I moduli (elemento modules).

  • I gestori (elemento handlers).

Alcune impostazioni si applicano unicamente alla modalità integrata e non alla modalità classica di°IIS 7.0. Ad esempio, se l'applicazione viene eseguita in modalità classica, i gestori e i moduli°di codice gestito specificati nella sezione system.WebServer del file Web.config vengono ignorati. Al contrario, i gestori e i moduli di codice gestito°devono essere definiti come nelle versioni precedenti di IIS, utilizzando gli elementi httpModules e httpHandlers della sezione°system.web.

Per esempi dell'utilizzo della sezione di configurazione system.webServer, vedere Procedura: configurare la sezione <system.webServer> per IIS 7.0.

Spostamento di un'applicazione Web nella modalità classica

In genere, lo spostamento di un'applicazione Web da IIS°6.0 alla modalità classica di IIS 7.0 richiede solo l'inserimento dell'applicazione in un pool di applicazioni eseguito nella stessa modalità. Ad esempio, quando si installa IIS 7.0°con°, per impostazione predefinita il server Web viene configurato per il funzionamento in modalità integrata. Viene inoltre configurato per l'esecuzione nel pool di applicazioni predefinito, denominato DefaultAppPool. Per eseguire un'applicazione Web in modalità classica, utilizzare l'applicazione°Classic.NETAppPool oppure creare un nuovo pool di applicazioni configurato per l'esecuzione°nella modalità classica. Per informazioni sulla°creazione di un pool di applicazioni, vedere Create an Application Pool (informazioni in lingua inglese).

I moduli personalizzati che implementano l'interfaccia IHttpModule in un'applicazione eseguita in modalità classica ricevono una notifica solo per le richieste della pipeline gestite dal runtime ASP.NET. Ad esempio, ricevono una notifica per le richieste per una pagina ASPX. Il ciclo di vita dell'applicazione per la modalità classica è uguale al ciclo di vita per ASP.NET in IIS 6.0. Per ulteriori informazioni, vedere Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 5.0 e 6.0.

Se un'applicazione eseguita in modalità classica contiene un gestore che richiede un mapping di script per gestire un'estensione personalizzata in IIS, è necessario registrare il gestore sia nel gruppo httpHandler sia nel gruppo handler. Per eseguire il mapping dell'estensione di file personalizzata all'estensione ISAPI ASP.NET (Aspnet_isapi.dll), specificare gli attributi modules e scriptProcessor nell'elemento handler. Questi attributi specificano che il modulo che definisce il gestore è un'estensione ISAPI; specificano inoltre il percorso dell'estensione. In questo modo IIS 7.0 eseguito in modalità classica fornisce la compatibilità con le versioni precedenti di IIS. Tuttavia, se si esegue l'applicazione in modalità integrata, è necessario rimuovere gli attributi modules e scriptProcessor. Per ulteriori informazioni, vedere Procedura: configurare un'estensione del gestore HTTP in IIS.

Quando si sposta un'applicazione Web da IIS 6.0 alla modalità classica, non è possibile garantire l'utilizzo della modalità integrata senza alcuna modifica. Il passaggio di un'applicazione dalla modalità classica alla modalità integrata, con conseguente modifica dei moduli e gestori personalizzati, può richiedere modifiche aggiuntive che consentano di eseguire correttamente l'applicazione nella modalità integrata. Nella sezione successiva di questo argomento viene illustrato come spostare un'applicazione nella modalità integrata di°IIS 7.0.

Spostamento di un'applicazione Web nella modalità integrata

Di norma, le applicazioni Web che non includono moduli o gestori personalizzati possono essere utilizzate senza alcuna modifica nella modalità integrata di IIS 7.0. Nel caso di applicazioni Web che si basano su moduli o gestori personalizzati, è necessario eseguire la procedura riportata di seguito per consentire l'esecuzione dell'applicazione in modalità integrata:

I moduli che implementano l'interfaccia IHttpModule sono definiti moduli di codice gestito poiché vengono compilati utilizzando .NET Framework. I moduli di codice gestito possono essere registrati a livello di server o di applicazione. I moduli di codice nativo sono DLL (codice°non gestito) registrate unicamente a livello di server. Le funzionalità ASP.NET principali, ad esempio lo stato sessione e l'autenticazione basata su form,°sono°implementate come moduli gestiti nella modalità integrata.

Quando un'applicazione passa dalla modalità classica alla modalità integrata, è possibile lasciare i moduli personalizzati e le registrazioni di gestori per la modalità classica oppure rimuoverli. Se non si rimuovono le registrazioni httpModules e httpHandlers utilizzate in modalità classica, è necessario impostare l'attributo validateIntegratedModeConfiguration dell'elemento validation su false per evitare errori. L'elemento validation è un elemento figlio di system.webServer. Per ulteriori informazioni, vedere la sezione "Disabling the migration message" in ASP.NET Integration with IIS 7.0 (informazioni in lingua inglese).

Migrazione di un file Web.config per l'utilizzo in modalità integrata

Se un modulo o gestore viene definito a livello di applicazione, non verrà richiamato automaticamente. Sono inclusi i moduli o gestori definiti in un assembly nella cartella Bin o come codice sorgente nella cartella App_Code e non registrati nella sezione system.webServer del file Web.config. Affinché possa partecipare alla pipeline di richieste in modalità integrata, è necessario registrare il modulo o gestore utilizzando uno dei metodi seguenti:

Classi e proprietà per l'utilizzo della modalità integrata

Quando si utilizza un'applicazione nella modalità integrata di°IIS 7.0 e in .NET Framework°versione 3.0 o successiva, è possibile utilizzare i seguenti membri e classi non disponibili in modalità classica:

Vedere anche

Concetti

Esecuzione di applicazioni Web in Windows Vista con IIS 7.0 e Visual Studio