Antonio Feliziani
a- a+

I file di configurazione

ASP.NET facilita il rilasciodelle applicazioni grazie alla presenza dei file diconfigurazione a livello macchina ed applicativo. Vieneinoltre ridefinito e potenziato il ruolo di global.asa

Chi di voi ha realizzato in passato vere e proprieapplicazioni con Asp, si è certamente scontrato con ladifficoltà di prendere il progetto sviluppato inlocale e portarlo in produzione. Le differenze diconfigurazione tra i server (in particolareIIS) dà a volte risultati imprevisti,che magari si manifestano quando il sito è giàstato avviato.

ASP.NET risolve questa problematica gestendo leconfigurazioni dei server e degli applicativi utilizzando duefile in formatoXML:

  • web.config - può essere utilizzato per ogni applicazione e definisce la configurazione e le politiche di sicurezza delle pagine componenti l’applicazione
  • machine.config - è un unico file che contiene la configurazione comune a tutto il server

Con ASP.NET viene anche ridiscusso il ruolo di Global.asa (Global.asax da questa versione), che nonsi occupa più di contenere informazioni sullaconfigurazione dell’applicazione, ma contiene piuttostoparti di codice comune.

 

Web.config

Web.config facilita lasincronizzazione tra ambiente di prova e ambiente diproduzione. Può contenere:

  • variabili comuni a tutte le applicazioni
  • configurazioni per le sessioni
  • opzioni per la gestione degli errori
  • informazioni per la sicurezza

Vediamo la configurazione in azione con un semplice esempio:il reindirizzamento ad una pagina in caso di errore.

Abbiamo creato una semplice pagina che genera un errore(è dichiarato unDataSet ma non sono importati inamespace di ADO.NET).

Il semplice file di configurazione, che ospitiamo nellastessa cartella della pagina, ha una forma del tipo:

    <?xml version="1.0" encoding="utf-8" ?>   <configuration>    <appSettings>    <add key="ConnectionString" value="Provider=SQLOLEDB.1;data source=antoniov;initial catalog=Biblioteca;uid=anon;pwd=;" />    </appSettings>    <system.web>    <customErrors mode="On" defaultRedirect="errorpage.aspx" />    <sessionState mode="Off" />    </system.web>  </configuration>


Nell’esempio sono presenti due elementi di interesse:

  • è aggiunta una chiave che permette di centralizzare l’uso della stringa di connessione utilizzata per connettersi ad un database
  • il tag customErrors definisce la pagina da richiamare in caso di errore

Per accedere alla chiave da una pagina aspx èsufficiente utilizzare una sintassi del tipoConfigurationSettings.AppSettings(”ConnectionString”)

 

Global.asax

Abbiamo detto che il file global.asax da questa versione nonospiterà più elementi di configurazione: questaeredità viene presa da web.config.

Global.asax è oraun “contenitore” di codice comune adun’applicazione web. Viene impiegato tra l’altroper:

  • importare dei namespace a livello di applicazione per non doverli dichiarare in ogni pagina
  • eseguire operazioni all’avvio e al termine delle sessioni e dell’applicazione (come già accadeva in parte con Asp)
  • eseguire del codice al verificarsi di una condizione di errore

Nel prossimo esempio vediamo proprio come è possibilegestire una condizione di errore salvando un log nel registro degli eventi.

La struttura di global.asax è la seguente:

    <%@ Import Namespace="System.Diagnostics" %>     <script language="VB" runat="server">     Sub Application_Error(objSender as Object, objArgs as EventArgs) Dim strLogName As String = "Errori Web"     Dim strMessage As String = "URL " & Request.Path & " Errore: " & Server.GetLastError.ToStringIf (Not EventLog.SourceExists(strLogName)) ThenEventLog.CreateEventSource(strLogName, strLogName)    End if     Dim ELLog as New EventLog    ELLog.Source = strLogName    ELLog.WriteEntry(strMessage, EventLogEntryType.Error)     End Sub   </script>


Al verificarsi di un errore (se questo non viene giàintercettato dal codice presente nella pagina), vienescatenato l’evento Application_Error. A questo punto vieneverificata la presenza di unlog “Errori Web” che vieneeventualmente creato e popolato con la descrizionedell’errore verificatosi.