ASP.NET 2.0 dispone di un sistema semplice ed integrato per monitorare la salute delle nostre applicazioni, fornendoci dettagliate informazioni a run-time.
Durante L'esecuzione dell'applicazione, il runtime ASP.NET e i controlli generano alcuni eventi che prendono il nome di WebEvent. Ad esempio, utilizzando il sistema di Membership, verranno generati Web Event distinti, dipendenti dall'esito del login. Gli eventi vengono elaborati da classi chiamate Provider, responsabili di recuperare e memorizzazione le informazioni trasportate dal Web Event.
Estendendo questo sistema, è possibile tenere traccia di ogni aspetto della nostra applicazione, ad esempio potremo monitorare operazioni "sensibili", come il cambio della password da parte di un utente.
Creiamo una classe che erediti da WebAuditEvent e la compiliamo nell'assembly MyWebEvent.dll:
public class ChangePasswordEvent : WebAuditEvent
{
public ChangePasswordEvent(string msg, object eventSource, int eventCode): base(msg, eventSource, eventCode)
{
}
public override void FormatCustomEventDetails(WebEventFormatter formatter)
{
base.FormatCustomEventDetails(formatter);
formatter.IndentationLevel += 1;
formatter.AppendLine("cambio password");
formatter.IndentationLevel -= 1;
}
}
Il costruttore accetta tre parametri: una stinga da utilizzare per associare un messaggio all'evento, l'oggetto che genera l'evento e un intero associato al codice dell'evento.
Eseguiamo l'ovverride del metodo FormatCustomEventDetails, per inserire, se necessario, informazioni aggiuntive inerenti l'evento.
Quindi inizializziamo un'istanza di ChangePasswordEvent nell'handler per l'evento generato, al cambio della password, scatenato dal nuovo WebControl ChangedPassword:
protected void MyChangePassword_ChangedPassword(object sender, EventArgs e)
{
ChangePasswordEvent cp = new ChangePasswordEvent("cambio password", this, WebEventCodes.WebExtendedBase + 1);
cp.Raise();
}
Adesso abbiamo l'evento e chi lo genera, l'ultimo passo da compiere è la configurazione dell'applicazione per associare l'evento ad un provider. Per fare questo, aggiungiamo la sezione
<healthMonitoring enabled="true" >
<providers>
<clear/>
<add name="MySqlProvider" type="System.Web.Management.SqlWebEventProvider"
connectionStringName="MyConnection"
maxEventDetailsLength="10000"
buffer="true"
bufferMode="MyBufferModes"/>
</providers>
<rules>
<clear/>
<add name="ChangePassword Event"
eventName="ChangePassword"
provider="MySqlProvider"
minInterval="00:00:30"/>
</rules>
<eventMappings>
<clear/>
<add name="ChangePassword" type="MyWebEvent.ChangePasswordEvent,MyWebEvent"/>
</eventMappings>
<bufferModes>
<clear/>
<add name="MyBufferModes"
maxBufferSize="10"
maxFlushSize="5"
urgentFlushThreshold="3"
regularFlushInterval="00:05:00"
urgentFlushInterval="00:01:00"
maxBufferThreads="1"/>
</bufferModes>
</healthMonitoring>
Nella sezione
Con
Per utilizzare SqlWebEventProvider è necessario configurare SQL Server, operazione che può essere comodamente eseguita tramite il tool aspnet_regsql.exe o sfruttando la classe SqlServices.
- Modificare i CSS Friendly Control Adapters
- #930 - Propagare un evento al controllo padre nei Custom Control
- Introduzione ad Entity Framework
- ASP.NET 3.5 Extensions: introduzione ad ASP.NET MVC
- Membership API per SQL Server anche senza dbo
- #926 - Autenticazione con Membership API e selezione del dominio per Active Directory
- ASP.NET 3.5 Extensions: MVC, history e Dynamic Data Controls
- #938 - Paginazione con il DataPager di ASP.NET 3.5
- #26 - HttpHandler per XAP non registrato in IIS
- I Dynamic Data Control non sono solo wizard
- #939 - Un ExpressionBuilder di ASP.NET per recuperare le immagini all'interno del tema corrente
- Slide e demo della mia sessione ai Community Days online
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!