Alessio Luffarelli - Sito Web
Sei qui: Guide e Tutorial / Web / Il file Web.config
Il file di configurazione Web.config

Vediamo in questo tutorial gli aspetti più comuni del file Web.config di ASP.Net.

1 - Caratteristiche generali:

  • E' il file di configurazione delle applicazioni ASP.Net.
  • Si basa su uno standard XML che lo rende potente e semplice allo stesso tempo.
  • Essendo basato su uno standard XML, è case sensitive.
  • Permette l'installazione di una applicazione sul server, semplicemente uploadando i file.
  • Sono ammessi più file Web.config per una sola applicazione, uno per ogni directory,
  • Ogni sub-directory eredita le impostazioni della cartella padre.
  • Tutti gli elementi sono nidificati dentro un elemento superiore di nome <configuration>.
  • Tutti gli elementi non necessari possono essere omessi.
  • E' diviso in sezioni, ognuna con un compito preciso.

2 - Sezioni principali

Le sezioni principali, nidificate dentro il tag <configuration>, sono due:

  • <system.web>: contiene tutti gli elementi di configurazione predefiniti di ASP.net.
  • <appSettings>: contiene eventuali costanti di configurazione introdotte dal programmatore e inerenti la specifica applicazione. Non sono configurazioni predefinite di ASP.Net.

Ecco un esempio di file Web.config vuoto:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <system.web>
  </system.web>

  <appSettings>
  </appSettings>

</configuration>

2.1 - system.web

Contiene tutte le impostazioni di configurazione che ASP.Net mette a disposizione. Vedremo ora le sezioni più importanti. Alcune sezioni verrano presentate direttamente con un esempio e ne verrano mostrate solo le caratteristiche più comuni in ambito di siti web. Non si deve quindi intendere questa trattazione come completa ed esaustiva.

2.1.1 - authentication e authorization

Sono utilizzati per gestire l'autenticazione in un'applicazione. Non vengono trattati in questo contesto in quanto oggetto di questo tutorial sull'autenticazione in ASP .Net.

2.1.2 - compilation

In fase di test dell'applicazione si dovrebbe inserire la seguente riga nel file di configurazione:

<compilation debug="true" />. Se si sta utilizzando Visual Studio, questa impostazione può essere trascurata. Quando si esegue un applicazione sul server in fase di produzione, è opportuno impostare a "false" la stessa riga.

2.1.3 - customErrors

Consente, tra le altre cose, di definire delle pagine di errore personalizzate. Ecco un esempio:

<customError mode="On" defaultRedirect="/error.html">
  <error statusCode="404" redirect="/not_found.html" />
</customError>

In questo modo abbiamo definito una pagina di errore generica di nome "error.html" e una pagina di errore "not_found.html" che viene visualizzata al posto dell'errore 404 del server. Avremmo potuto ridefinire una pagina diversa per ogni errore del server.

2.1.4 - globalization

Configura le impostazioni internazionali e di lingua. Per l'italiano è sufficiente impostarlo in questo modo:

<globalization
   culture="IT-it"
   uiCulture="IT-it"
   requestEncoding="iso-8859-1"
   responseEncoding="iso-8859-1" />

2.1.5 - sessionState

Permette di configurare lo stato della sessione. In questo esempio impostiamo la durata di una sessione a 10 minuti (timeout), diciamo che questa verrà elaborata dal processo (mode) e che l'ID di sessione verrà mantenuto tramite un cookie (cookieless).

<sessionState
  timeout="10"
  mode="Inproc"
  cookieless="false" />

2.1.6 - httpRuntime

Serve per definire alcune impostazioni di esecuzione HTTP. Ecco un esempio..

<httpRuntime
  appRequestQueueLimit="100"
  executionTimeout="60"
  maxRequestLength="2048" />

.. con la spiegazione:

  • appRequestQueueLimit specifica il limite massimo di richieste che ASP.Net può gestire. Le richieste in eccesso vengono rifiutate.
  • executionTimeout imposta il tempo massimo (in secondi) per elaborare una richiesta. Se il server supera questo tempo la richiesta viene interrotta.
  • maxRequestLength imposta le dimensione massime (in Kilobyte) dei file caricati tramite form.

2.1.7 - identity

Imposta l'identità con cui viene eseguito ASP.Net.

<identity impersonation="true|false"
  name="username"
  password="pass" />

  • impersonation impostato a true: se name e password sono omessi, ASP.net verrà eseguito con l'identità fornita da IIS, altrimenti con quella specificata da name e password.
  • impersonation impostato a false: ASP.Net viene eseguito con l'account System.

2.1.8 - machineKey

Consente di configurare le chiavi da utilizzare per la crittografia e la decrittografia dei dati dei cookie di autenticazione dei form e dei dati dello stato di visualizzazione e per la verifica dell'identificazione dello stato delle sessioni out-of-process.

<machineKey validationKey="AutoGenerate|value"
  decryptionKey="AutoGenerate|value"
  validation="SHA1|MD5|3DES" />

Se validationKey e decryptionKey vengono impostati ad AutoGenerate, la chiavi utilizzate, rispettivamente, per convalidare e codificare i dati, vengono create automaticamente da ASP.Net. In alternativa è possibile specificarne una propria. Questa opzione è utile qualora si necessita che più server differenti condividano le stesse chiavi (es: Server Farm).

I tre possibili valori di validation specificano l'algoritmo utilizzato per la crittografia.

2.2 - appSettings

Può contenere variabili di configurazione, inserite dentro il tag <add key>, che potranno essere lette a runtime dall'applicazione. Può essere usata, ad esempio, per inserire stringhe di connessione al Database, percorsi di file o qualunque altra cosa riteniamo utile. Vediamone un esempio.

<appSettings>
  <add key="Username" value=”user” />
  <add key="Password" value=”pass” />
</appSettings>

Da codice possiamo poi leggere i valori dichiarati in questo modo:

string user = ConfigurationSettings.AppSettings["Username"];

(C) Alessio Luffarelli