Condividi tramite


Procedura dettagliata: configurazione delle applicazioni ASP.NET in IIS 7.0

Aggiornamento: novembre 2007

Se un'applicazione Web ASP.NET è ospitata in IIS 7.0, è possibile creare le relative impostazioni di configurazione in diversi modi, inclusi i seguenti tipi:

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

  • Modificando direttamente il file Web.config. Questa azione può essere eseguita in Visual Studio o Visual Web Developer, oppure utilizzando un programma di modifica del testo.

  • 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. Per ulteriori informazioni, vedere IIS 7.0 Command-Line Tool (informazioni in lingua inglese).

  • Tramite Strumentazione gestione Windows (WMI). Lo spazio dei nomi WebAdministration del provider WMI di IIS 7.0 contiene classi e metodi che consentono di creare script per le attività di amministrazione per siti Web, applicazioni Web, nonché gli oggetti e le proprietà associati. Per ulteriori informazioni, vedere IIS 7.0: WMI (informazioni in lingua inglese).

IIS 7.0 possiede un'architettura modulare che consente di specificare quali moduli costituiscono la funzionalità di un server Web. Quando IIS 7.0 è installato, per impostazione predefinita molti moduli non sono attivati. Quando si utilizzano i siti Web ASP.NET, è possibile che si presenti la necessità di attivare i seguenti moduli:

  • Modulo Compatibilità gestione IIS 6, il quale consente a Visual Studio di utilizzare le chiamate della metabase per interagire con l'archivio di configurazione di IIS 7.0.

  • Modulo Autenticazione di Windows, il quale consente di eseguire il debug di applicazioni Web in Visual Studio.

Per ulteriori informazioni, vedere Esecuzione di applicazioni Web in Windows Vista con IIS 7.0 e Visual Studio e Esecuzione di applicazioni Web in Windows Server 2008 con IIS 7.0 e Visual Studio.

In questa procedura dettagliata verranno create impostazioni di configurazione tramite Gestione IIS, per poi analizzare come queste vengono riflesse nel file Web.config di un'applicazione Web. Di seguito sono elencate alcune delle attività illustrate nella procedura dettagliata:

  • Creazione di un modulo di codice gestito personalizzato e inserimento del modulo nella directory App_Code di un'applicazione Web.

  • Registrazione del modulo personalizzato tramite Gestione IIS.

  • Aggiunta di un'intestazione HTTP personalizzata tramite Gestione IIS.

La funzionalità del modulo non è importante in questa procedura dettagliata. Al contrario, la procedura illustra come il modulo viene integrato nella pipeline delle richieste e come la configurazione dell'applicazione tramite Gestione IIS influisce sul file Web.config.

Prerequisiti

Per completare questa procedura dettagliata è necessario disporre dei seguenti elementi:

  • IIS 7.0 installato e in esecuzione in Windows Vista o Windows Server 2008.

  • Almeno un pool di applicazioni in esecuzione nella modalità integrata di IIS 7.0.

  • Il modulo Compatibilità gestione IIS 6 attivato in IIS 7.0.

  • Visual Studio 2008.

  • .NET Framework versione 3.0 o successiva.

  • Autorizzazioni amministrative sul computer in uso.

  • Uno strumento per esaminare le richieste e risposte HTTP tra il computer e i server Web, ad esempio lo strumento Fiddler disponibile sul sito Web Fiddler Web Debugging Proxy (informazioni in lingua inglese).

    Nota:

    Fiddler è un strumento di terze parti non supportato da Microsoft.

Creazione di un modulo HTTP personalizzato

Per iniziare verrà creato un nuovo sito Web.

Per creare un nuovo sito Web

  1. In Visual Studio, creare un nuovo sito Web HTTP locale denominato WalkthroughIIS7.

    Per informazioni sulla creazione di un sito Web IIS locale, vedere Procedura dettagliata: creazione di un sito Web IIS locale in Visual Web Developer.

  2. Dal menu Start scegliere Tutti i programmi, Accessori, quindi Esegui.

  3. Nella casella Apri digitare inetmgr, quindi scegliere OK.

    Nota:

    Se Controllo dell'account utente è attivato, è possibile che venga visualizzato un messaggio quando si tenta di accedere a Gestione IIS. In caso affermativo, scegliere Continua. Per ulteriori informazioni, vedere User Account Control (informazioni in lingua inglese).

  4. Verificare che il sito Web sia in un pool di applicazioni in esecuzione in modalità integrata.

    Per informazioni sull'impostazione della modalità di un'applicazione Web, vedere Configure the Request-Processing Mode for an Application Pool (informazioni in lingua inglese).

Ora è possibile creare il modulo HTTP personalizzato.

Per creare un modulo HTTP personalizzato

  1. In Visual Studio, in Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto Web, quindi scegliere Aggiungi nuovo elemento.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

  2. In Modelli Visual Studio installati, selezionare Classe.

  3. Selezionare il linguaggio di programmazione desiderato.

  4. Immettere CustomModule come nome della classe, quindi scegliere Aggiungi.

    Se il sito Web non contiene ancora una cartella App_Code, verrà visualizzato un messaggio nel quale viene chiesto se si desidera inserire la classe nella cartella App_Code. In caso affermativo, scegliere .

  5. Nel file della classe, rimuovere il codice esistente e sostituirlo con il seguente codice:

    Imports System
    Imports System.Configuration
    Imports System.Web
    Imports System.Web.Security
    Imports System.Web.UI
    
    Public Class CustomModule
        Implements IHttpModule
    
        Public Sub New()
            ' Constructor
        End Sub
    
        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.BeginRequest, AddressOf Me.BeginRequest
        End Sub
    
    
        Public Sub BeginRequest(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim cont As HttpContext = app.Context
            Dim notification As String = cont.CurrentNotification.ToString()
            Dim postNotification As String = cont.IsPostNotification.ToString()
            cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " & notification & _
                    ", PostNotification = " & postNotification + _
                    ", DateTime = " & DateTime.Now.ToString())
    
        End Sub
    
        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub
    End Class
    
    using System;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    
    public class CustomModule : IHttpModule
    {
        public CustomModule()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.BeginRequest += new EventHandler(BeginRequest);
        }
        public void BeginRequest(object source, EventArgs e)
        {
    
            HttpApplication app = (HttpApplication)source;
            HttpContext cont = app.Context;
            string notification = cont.CurrentNotification.ToString();
            string postNotification = cont.IsPostNotification.ToString();
            cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " + notification +
                    ", PostNotification = " + postNotification +
                    ", DateTime = " + DateTime.Now.ToString());
    
        }
        public void Dispose()
        {
        }
    }
    

    Il codice consente di effettuare le seguenti operazioni:

    • Definire un modulo di codice gestito personalizzato che implementa l'interfaccia IHttpModule.

    • Definire un gestore eventi per l'evento BeginRequest dell'istanza HttpApplication. Il gestore eventi definisce un'intestazione personalizzata da aggiungere all'insieme di intestazioni per le risposte.

    • Aggiungere il gestore alla pipeline delle richieste per la notifica nel metodo Init del modulo.

    Poiché implementa l'interfaccia IHttpModule, la classe deve implementare un metodo Init e un metodo Dispose. Il metodo Dispose in questo modulo non possiede alcuna funzionalità, ma in esso è possibile implementare la logica di eliminazione, se necessario.

  6. Scegliere Compila sito Web dal menu Compila per accertarsi che non vi siano errori nel modulo.

L'ultima attività di questa sezione prevede la creazione di pagine ASP.NET e HTML che consentiranno di testare il modulo personalizzato nelle fasi successive della procedura dettagliata.

Per creare pagine di prova ASP.NET e HTML

  1. Aggiungere una nuova pagina Web ASP.NET in file unico denominata ASPXpage.aspx nella cartella radice dell'applicazione.

  2. Rimuovere il markup esistente e sostituirlo con il seguente markup:

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script >
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>ASPX Module Test Page</title>
    </head>
    <body>
        <form id="form1" >
        <div>
        <%= Response.Headers.Get("CustomHeader2").ToString() %>
        </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script >
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>ASPX Module Test Page</title>
    </head>
    <body>
        <form id="form1" >
        <div>
        <%= Response.Headers.Get("CustomHeader2").ToString() %>
        </div>
        </form>
    </body>
    </html>
    
  3. Aggiungere una nuova pagina HTML denominata HTMLPage.htm nella cartella radice dell'applicazione Web.

  4. Aggiungere alla pagina HTML il seguente markup.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>HTML Module Test Page</title>
    </head>
    <body>
        <div>
           HTML page.
           <br />
        </div>
    </body>
    </html>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>HTML Module Test Page</title>
    </head>
    <body>
        <div>
           HTML page.
           <br />
        </div>
    </body>
    </html>
    
  5. Salvare tutte le modifiche.

  6. Eseguire singolarmente la pagina ASPXpage.aspx e la pagina HTMLpage.htm per accertarsi che possano essere visualizzate in un browser.

    Nota:

    Lasciare aperta l'applicazione Visual Studio, che verrà utilizzata in un secondo momento per verificare le modifiche di configurazione apportate tramite Gestione IIS.

In questa fase, le pagine vengono eseguite ma non richiamano il modulo personalizzato. Nella procedura successiva il modulo personalizzato verrà aggiunto alla pipeline delle richieste.

Effettuare modifiche di configurazione tramite Gestione IIS

In questa sezione verrà utilizzato Gestione IIS per creare diverse impostazioni di configurazione per l'applicazione IIS. Si procederà con la registrazione del modulo personalizzato, l'aggiunta di un'intestazione personalizzata e la disattivazione della compressione statica.

Per registrare il modulo di codice gestito personalizzato

  1. Dal menu Start scegliere Tutti i programmi, Accessori, quindi Esegui.

  2. Nella casella Apri digitare inetmgr, quindi scegliere OK.

    Nota:

    Se Controllo dell'account utente è attivato, è possibile che venga visualizzato un messaggio quando si tenta di accedere a Gestione IIS. In caso affermativo, scegliere Continua. Per ulteriori informazioni, vedere User Account Control (informazioni in lingua inglese).

  3. Nel riquadro Connessioni, espandere il nome del computer o del server che ospita il sito Web.

  4. Espandere la cartella Siti.

  5. Selezionare il sito Web WalkthroughIIS7. In Windows Server 2008, se l'applicazione Web è un'applicazione di un sito Web, espandere innanzitutto il sito, quindi selezionare WalkthroughIIS7.

    Per impostazione predefinita, il riquadro centrale di Gestione IIS visualizza le opzioni di configurazione del server Web in diverse aree. Per l'applicazione Web WalkthroughIIS7 sono presenti due aree: ASP.NET e IIS.

  6. Nella sezione IIS del riquadro centrale, fare doppio clic sull'icona Moduli.

    Il dettaglio Moduli nel riquadro centrale visualizza tutti i moduli attualmente configurati per IIS.

  7. Nel riquadro Azioni, scegliere Aggiungi modulo gestito.

    Verrà visualizzata la finestra di dialogo Aggiungi modulo gestito.

  8. Digitare CustomModule nella casella Nome.

    Il nome può essere qualsiasi parola o frase che descrive il modulo. In questa procedura dettagliata si utilizzerà solo il nome del modulo.

  9. Nell'elenco Tipo, selezionare o digitare il nome completo del tipo gestito per il modulo.

    Il tipo CustomModule viene visualizzato nell'elenco perché la configurazione IIS include qualsiasi classe nella cartella App_Code che implementa IHttpModule.

  10. Verificare che la casella di controllo Richiama solo per richieste a applicazioni ASP.NET o a gestori gestiti non sia selezionata.

    Per questa procedura dettagliata, si desidera applicare il modulo a tutte le richieste nella pipeline, non solo alle richieste ASP.NET.

  11. Scegliere OK.

    Il modulo di codice gestito viene aggiunto all'elenco dei moduli. Potrebbe essere necessario scorrere o riordinare l'elenco per visualizzare il modulo aggiunto.

Per aggiungere un'intestazione di risposta personalizzata

  1. Nel riquadro sinistro di Gestione IIS, fare clic sul nome del nodo WalkthroughIIS7 per visualizzare il riquadro di configurazione principale del sito.

  2. Nella sezione delle impostazioni IIS del riquadro centrale, fare doppio clic sull'icona Intestazioni risposta HTTP.

    Il dettaglio della funzionalità Intestazioni risposta HTTP viene visualizzato nel riquadro centrale e contiene tutte le intestazioni di risposta HTTP attualmente definite.

  3. Scegliere Aggiungi nel riquadro Azioni.

    Verrà visualizzata la finestra di dialogo Aggiungi intestazione risposta HTTP personalizzata.

  4. Nella casella di testo Nome digitare CustomHeader1.

    Il nome può essere qualsiasi parola o frase che descrive l'intestazione.

  5. Nella casella di testo Valore, digitare il valore SampleHeader.

A questo punto verrà disattivata la compressione statica. Così facendo si eviterà che il contenuto statico, ad esempio le pagine HTML, venga compresso.

Per disattivare la compressione statica

  1. Fare clic sul nome del nodo WalkthroughIIS7 nel riquadro sinistro per visualizzare il riquadro di configurazione principale del sito nel riquadro centrale.

  2. Nel riquadro centrale di Gestione IIS, fare doppio clic sull'icona Compressione nella sezione delle impostazioni IIS.

    Il dettaglio della funzionalità Compressione viene visualizzato nel riquadro centrale.

  3. Verificare che la casella di controllo Abilita compressione statica del contenuto sia deselezionata.

Verifica delle modifiche di configurazione in Visual Studio

In questa procedura dettagliata, le attività di configurazione sono state eseguite utilizzando Gestione IIS. Le modifiche apportate verranno visualizzate nel file Web.config dell'applicazione.

Per controllare la registrazione del modulo nel file Web.config

  1. Tornare all'applicazione Visual Studio e all'applicazione WalkthroughIIS7.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del sito Web, quindi scegliere Aggiorna cartella.

    La visualizzazione della cartella del sito Web di Visual Studio verrà sincronizzata con la cartella e i file sul disco.

    Se in origine l'applicazione non conteneva un file Web.config, ora un file di questo tipo è presente nell'applicazione. Se l'applicazione conteneva già un file Web.config, le modifiche sono state apportate a tale file.

  3. In Esplora soluzioni fare doppio clic sul file Web.config per visualizzarne il contenuto.

    La sezione system.webServer include le modifiche di configurazione apportate utilizzando Gestione IIS. La sezione system.webServer dispone dei seguenti elementi figlio:

    • Un elemento modules che registra il modulo personalizzato per la pipeline di elaborazione delle richieste.

    • Un elemento httpProtocol che definisce l'intestazione di risposta personalizzata.

    • Un elemento urlCompression che disattiva la compressione statica.

    La sezione system.webServer apparirà come nell'esempio riportato di seguito:

    <system.webServer>
      <modules>
        <add name="CustomModule" type="CustomModule" preCondition="" />
      </modules>
      <httpProtocol>
        <customHeaders>
          <add name="CustomHeader1" value="SampleHeader" />
        </customHeaders>
      </httpProtocol>
      <urlCompression doStaticCompression="false" />
    </system.webServer>
    

    Per ulteriori informazioni sulla sezione system.webServer, vedere Utilizzo della configurazione ASP.NET e IIS 7.0: system.webServer Section Group (IIS Settings Schema) (informazioni in lingua inglese).

Test del modulo personalizzato

IIS 7.0 possiede una pipeline delle richieste integrata. Le richieste per tutte le risorse dell'applicazione (ad esempio una pagina ASPX o una pagina HTM) possono generare notifiche della pipeline in un modulo di codice gestito quale il modulo personalizzato creato in questa procedura dettagliata.

Nota:

Durante la configurazione del modulo di codice gestito in Gestione IIS, l'opzione Richiama solo per richieste a applicazioni ASP.NET o a gestori gestiti non è stata selezionata. Se fosse stata selezionata, il modulo personalizzato riceverebbe notifiche della pipeline solo per le risorse ASP.NET e non per le risorse statiche quali ad esempio i file HTML.

Per verificare che il modulo personalizzato venga applicato a tutte le risorse

  1. In Visual Studio, aprire la pagina ASPXpage.aspx e premere CTRL+F5 per visualizzare la pagina in un browser.

    L'intestazione personalizzata definita nel modulo viene visualizzata nel browser. Nella pagina ASP.NET non è possibile accedere all'intestazione personalizzata definita da IIS, poiché le informazioni su questa intestazione vengono aggiunte una volta eseguito il rendering del contenuto della pagina al flusso. Tuttavia, è possibile confermare che l'intestazione è impostata utilizzando un strumento che controlla il traffico HTTP, ad esempio Fiddler.

  2. Aprire lo strumento di monitoraggio del traffico HTTP e aggiornare la pagina ASPXpage.aspx nel browser.

    Nota:

    Se l'URL della pagina ASPXpage.aspx utilizza localhost, sostituire quest'ultimo con il nome del computer nel quale è installato IIS 7.0. In uno scenario di sviluppo tipico, si tratta anche del computer nel quale è in esecuzione Visual Studio.

  3. Verificare che CustomHeader1 e CustomHeader2 siano visualizzati nell'insieme di intestazioni della risposta.

  4. Visualizzare la pagina HTMLPage.htm in un browser.

  5. Verificare che CustomHeader1 e CustomHeader2 siano visualizzati nell'insieme di intestazioni della risposta.

Passaggi successivi

Questa procedura dettagliata ha fornito un'introduzione alla configurazione di ASP.NET in IIS 7.0. Le impostazioni di configurazione per il server Web di IIS 7.0 e per ASP.NET sono riunite in un file di configurazione che è possibile modificare utilizzando un'unica interfaccia amministrativa.

Oltre a questo, è possibile analizzare le impostazioni aggiuntive in Gestione IIS, nonché il modo in cui le modifiche vengono riflesse nel file di configurazione. Per ulteriori informazioni, vedere Internet Information Services (IIS) (informazioni in lingua inglese).

Vedere anche

Attività

Procedura dettagliata: configurazione delle applicazioni ASP.NET in IIS 6.0 tramite MMC

Concetti

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

Altre risorse

Configuring Modules in IIS 7.0

Configuring HTTP Response Headers in IIS 7.0