Condividi tramite


Sistema di configurazione in IIS 7

di Walter Oliver

Panoramica

IIS 7 introduce un nuovo sistema di configurazione, alla base di tutte le nuove funzionalità correlate all'amministrazione. Il sistema di configurazione si basa su file XML distribuiti, non crittografati che contengono le impostazioni di configurazione per l'intera piattaforma server Web, tra cui IIS, ASP.NET e altri componenti, ad esempio FTP 7.5; facoltativamente, possono essere impostati nelle directory del contenuto insieme al contenuto Web, se sbloccato per tale livello. Si noti che le impostazioni di configurazione ftp 6.0 vengono archiviate in MetaBase.

Diversi livelli della gerarchia di configurazione possono essere delegati dall'amministratore del computer ad altri utenti, ad esempio il proprietario del sito o lo sviluppatore dell'applicazione. Proteggere le impostazioni predefinite e il blocco predefinito limitano l'accesso in scrittura alle impostazioni di configurazione solo all'amministratore del computer (le eccezioni sono alcune impostazioni specifiche del sito, ad esempio DefaultDocument); Tuttavia, funzionalità di blocco sofisticate e granulari consentono lo sblocco sicuro e la delega della gestione di impostazioni di configurazione specifiche a più utenti, per l'ambito dello spazio dei nomi Web. Il sistema è compatibile con le versioni precedenti di IIS a livello di API (dopo l'installazione del livello di compatibilità MetaBase).

A livello radice (o globale) sono presenti due file distinti:

  • system32\inetsrv\config\applicationHost.config: contiene le impostazioni predefinite globali per le impostazioni del server Web (IIS).
  • \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config: contiene le impostazioni predefinite globali per le impostazioni di .NET Framework, incluse alcune delle ASP.NET (le altre impostazioni si trovano nella web.config nella stessa cartella, denominata talvolta radice web.config).

Il motivo per cui esistono ancora due file separati è dovuto al fatto che le due tecnologie sono diverse (a livello di programmazione e di prodotto). IIS fa parte di Windows e .NET Framework può eseguire la versione in modo indipendente.

Nelle directory del contenuto Web possono essere presenti file facoltativi web.config che controllano il comportamento per il livello della gerarchia e verso il basso. Potrebbero essere locali o remoti (ad esempio, se la directory del contenuto si trova in una condivisione UNC). Possono contenere IIS, ASP.NET o qualsiasi altra impostazione di configurazione di .NET Framework che può essere specificata a livello di . Per impostazione predefinita, non sono presenti file web.config.

Gerarchia

In termini di gerarchia di ereditarietà, il file radice viene machine.config, quindi web.config nella stessa directory (denominata root web.config), quindi applicationHost.config, quindi i file web.config facoltativi lungo lo spazio dei nomi, come illustrato nel diagramma seguente. Diagramma che mostra la relazione tra i file contenuti negli spazi dei nomi I S 7 e File di configurazione.

Sezioni

All'interno di un file di configurazione, le impostazioni vengono organizzate in modo strutturato, in base a un'unità denominata "section". La sezione Di configurazione è un gruppo di impostazioni correlate logicamente che possono essere distribuite nel suo complesso o annulla la registrazione dal sistema nel suo complesso e vengono in genere utilizzate da un modulo server.

In altre parole, quasi tutti i moduli di runtime eseguiti nel processo di lavoro hanno una sezione di configurazione corrispondente. La sezione Di configurazione è anche l'unità di estendibilità: l'aggiunta di nuove impostazioni allo schema di configurazione viene eseguita estendendo una sezione esistente o aggiungendo una o più sezioni.

Le sezioni sono ulteriormente raggruppate in raccolte correlate logicamente, denominate "gruppi di sezioni". I gruppi di sezioni non sono l'unità di distribuzione, la registrazione o qualsiasi altra operazione sostanziale ,ad esempio il blocco, la crittografia. Non hanno impostazioni in esse. Il loro scopo è quello di strutturare ulteriormente l'organizzazione delle impostazioni ed evitare un lungo elenco semplice di sezioni di configurazione. Vengono usati per creare una gerarchia di impostazioni, in modo che abbiano relazioni tra di esse (padre/figlio).

In altre parole, i gruppi di sezioni possono essere annidati. Una determinata sezione appartiene sempre a un solo gruppo di sezioni e non può contenere altre sezioni (o gruppi di sezioni). Un determinato gruppo di sezioni può appartenere a un gruppo di sezioni padre e può contenere zero o più gruppi di sezioni figlio. In genere contiene più di una sezione; in caso contrario, non esiste un buon motivo per farlo al primo posto (tuttavia, i clienti possono estendere lo schema creando gruppi di sezioni personalizzati che hanno una sola sezione, per qualsiasi motivo).

Di seguito è riportato un esempio che illustra sezioni e gruppi di sezioni:

<!-- section group for web server configuration -->
<system.webServer>
  <!-- section group for web server security configuration -->
  <security>
    <!-- section group for web server authentication configuration -->
    <authentication>
      <!-- three sections for authentication -->
      <basicAuthentication ... />
      <windowsAutnentication ... />
      <anonymousAuthentication ... />
    </authentication>
  </security>
</system.webServer>

Ogni sezione ha un nome. Il nome breve è il nome della sezione stessa e il nome lungo è il nome completo, inclusi tutti i gruppi di sezioni contenenti. Ad esempio, il nome completo per "windowsAuthentication" è "system.webServer/security/authentication/windowsAuthentication". Questa organizzazione gerarchica consente sezioni future (e gruppi di sezioni) con lo stesso nome, ma in gruppi di sezioni diversi.

A ogni livello dello spazio dei nomi URL può essere associata la configurazione. La configurazione per un determinato livello eredita fino ai livelli figlio, a meno che non venga eseguito l'override specifico da un livello figlio. Un modo semplice per ottenere la configurazione per URL consiste nell'usare web.config file, nelle cartelle fisiche del file system mappate ai percorsi virtuali. A livello radice (a livello di computer), è necessario usare file separati, a seconda del gruppo di sezioni di configurazione (che verrà definito più avanti nel documento; ai fini correnti, considerarlo come il nome dell'elemento XML contenente la configurazione):

Gruppo di sezioni Descrizione File radice
system.applicationHost Sistema di attivazione di Windows: modello di processo System32\inetsrv\config\applicationHost.config
system.webServer IIS: server Web System32\inetsrv\config\applicationHost.config
system.web ASP.NET Windows\microsoft.net\framework\v2.0.50727\config\web.config
Sistema.* Altro framework .NET Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[Microsoft other] Microsoft altro Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[personalizzato] Terze parti machine.config o web.config radice o applicationHost.config, fino a terze parti/cliente

Il formato di persistenza della configurazione è XML; pertanto è utile descrivere i mapping tra le unità organizzative di configurazione e la terminologia XML. I gruppi di sezioni e le sezioni sono elementi XML. All'interno di una sezione le impostazioni sono organizzate in unità più piccole che seguono attentamente la terminologia XML:

Unità di configurazione Terminologia XML Descrizione
Elemento di configurazione Elemento XML Contiene altre unità figlio; non ha un valore.
Raccolta di configurazioni Elemento XML Caso privato dell'elemento: contiene un gruppo di elementi sotto forma di aggiunta/rimozione/cancellazione.
Proprietà di configurazione Attributo XML Contiene solo un valore; non contiene unità figlio.

Il sistema di configurazione viene guidato da uno schema dichiarativo, al suo centro. Lo schema di configurazione si estende su più file, che si trovano in un percorso noto: system32\inetsrv\config\schema. Per impostazione predefinita, solo gli amministratori del computer hanno accesso a questa cartella. I clienti o le terze parti possono aggiungere file di schema per le sezioni personalizzate copiandoli in tale directory. Il sistema di configurazione li ritirerà automaticamente all'avvio, nel processo di configurazione del chiamante. Se il sistema di configurazione è già in esecuzione, non rileverà le modifiche apportate ai file di schema o ai nuovi file.

Non modificare i file di schema IIS o altri file di schema installati in questa directory, perché gli errori possono causare un danneggiamento dello schema e l'impossibilità dell'avvio del server.

Nota

Non esiste un'interfaccia programmatica di alto livello per ottenere e impostare i file di schema, a corto di API di accesso ai file tradizionali e analisi/modifica XML. È sempre consigliabile eseguire il backup dello stato sensibile, ad esempio la cartella dello schema, prima di apportare modifiche.

Tre file costituiscono lo schema unificato della piattaforma server Web:

  • IIS_schema.xml: illustra le impostazioni e i gruppi di sezioni del server Web IIS e del sistema di attivazione di Windows.
  • ASPNET_schema.xml: illustra le impostazioni di ASP.NET nel gruppo di sezioni.
  • FX_schema.xml: illustra altre impostazioni di .NET Framework in vari gruppi di sezioni.

È anche possibile trovare FTP_schema.xml se è installata la funzionalità FTP di IIS 7.