Posts Tagged ASP.NET
Gestire le connection string in ASP.NET 2.0
ASP.NET 2.0 ha introdotto un’importante novità nella modalità di gestione delle connection string su web.config.
Al contario si ASP.NET 1.1, dove le connection string erano gestite come normali chiavi di application setting, in ASP.NET 2.0, è presente una nuova sezione (section) connectionStrings.
Dentro questa sezione e possibili aggiungere le connection string che ci interessano.
Vediamo un esempio:
<connectionStrings>
<remove name=”LocalSqlServer” />
<add name=”LocalSqlServer” connectionString=”Data Source=myDBServer;database=myDB;Integrated Security=True;” providerName=”System.Data.SqlClient”/>
</connectionStrings>
I parametri che ci interessano sono:
- name: specifica il nome della nostra connection string, e lo andremo ad utilizzare nel momento in cui dobbiamo reperirla
- connectionString: specifiva il valore vero e proprio della stringa di connessione.
Una volta specifica la nostra connection string nel file web.config, andarla a leggere è molto semplice. Basta utilizzare la classe ConfigurationManager come segue:
string strConnString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
Niente di più facile vero?
Gestione errori in ASP.NET
Come in ogni applicazione, anche nelle applicazioni ASP.NET gli errori possono presentarsi. La domanda è, come gestirli?
Chiaramente la prima cosa da fare in fase di scrittura del codice è utilizzare il construtto Try Catch in ogni parte dell’applicazione a rischio errore/eccezione. Questa modalità di sviluppo è molto importante e permette di poter gestire in modo diverso, tipologie di eccezzioni diverse. Questo però non è il tema del nostro “appunto”, che si focalizza invece su come intercettare gli errori non gestiti.
Per fare questo ASP.NET mette a disposizione 3 soluzioni:
- Il metodo Page_Error di un qualsiasi file aspx
- Il metodo Application_Error del file global.asax
- La sezione customErrors del web.config
L’ordine con cui sono stati elencati è anche l’ordine temporale nel quali le tre modalità vengono richiamate.
- Controllo se sulla pagina che ha generato l’errore è stato implementato il metodo Page_Error (scope : la pagina stessa)
- Controllo se a livello di applicazione è stato implementato il metodo Application_Error (scope : l’intera applicazione)
- Controllo della configurazione della sezione customErrors del web.config
Usare Page_Error
Ipotizziamo di utilizzare l’oggetto log di log4net per loggare.
Il metodo GetLastError della classe Sever ci ritorna l’oggetto Exception della errore che ha generato l’eccezione
Il metodo Server.ClearError() ci da la possibilità di fermare il processo di gestione dell’errore a questo punto (no global.asax, no web.config)
Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error
Dim log LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
Dim objError As Exception = Server.GetLastError.GetBaseException
log.Error(objError.Message, objError)
Server.ClearError()
End Sub
Usare il file global.asax
Questa modalità è identica a quella precedente, cambia soltato lo scope, dalla singola pagina all’intera applicazione.
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim log As ILog = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
Dim objError As Exception = Server.GetLastError.GetBaseException
log.Error(objError.Message, objError)
End Sub
Usare il file web.config
Questo è il blocco di configurazione presente nel file web.config.
<customErrors defaultRedirect=”url” mode=”On|Off|RemoteOnly”>
<error statusCode=”statuscode” redirect=”url”/>
</customErrors>
L’attributo mode puo essere:
- On : il customError è abilitato e sono è specificato il defaultRedirect l’utente vedra la pagina d’errore generica
- Off : il customError è disabilitato, quindi verra mostrata 1 pagina con il dettaglio dell’errore.
- RemoteOnly : il customError è abilitato sono per utenti che accedono dall’esterno. Mentre chi accede dalla stessa macchina vedrà il dettaglio dell’errore
L’attributo defaultRedirect indica la pagina verso la quale fare il redirect in caso d’errore.
E’ inoltre possibile specificare pagine diverse per statusCode HTTP diversi utilizzando l’elemento error dentro customError (vedi l’esempio).
Cosi appare la configurazione di default di web.config alla creazione di un nuova web application.
<customErrors mode=”RemoteOnly”>
Questo è un esempio di una configurazione completa
<customErrors mode=”On” defaultRedirect=”error.htm”>
<error statusCode=”500″ redirect=”error500.aspx?code=500″/>
<error statusCode=”404″ redirect=”filenotfound.aspx”/>
<error statusCode=”403″ redirect=”authorizationfailed.aspx”/>
</customErrors>
Spero sia tutto chiaro, nel caso chiedete pure!
Non mi resta che augurarvi buon error logging!