Eventi personalizzati per l'HealhMonitoring di ASP.NET 2.0

di Marco Leoncini, in ASP.NET 2.0, web.config, HealthMonitoring,

Negli script #748 e #789 abbiamo visto come estendere l'Health Monitoring rispettivamente implementando un WebEvent e un Provider Custom.

Esiste infine una terza possibilità per personalizzarne il comportamento, cioè creare una classe che implementi l'interfaccia IWebEventCustomEvaluator (System.Web.Management) e impostare nel web.config la proprietà custom nell'apposita sezione profiles della sezione healthMonitoring.

L'interfaccia definisce un solo metodo che il runtime utilizza per determinare quando il provider dovrà processare l'evento:

bool CanFire (
  WebBaseEvent raisedEvent,
  RuleFiringRecord record
)

Nell'esempio successivo passeremo al provider solo gli eventi generati dal sistema di Membership nel caso l'autenicazione non abbia successo.

using System;
using System.Collections.Generic;
using System.Web.Management;
using System.Text;

namespace IWebEventCustomEvaluatorProject
{
  public class MyCustomEvaluator : IWebEventCustomEvaluator
  {
    public bool CanFire(WebBaseEvent raisedEvent, RuleFiringRecord record)
    {
      return raisedEvent.EventCode == WebEventCodes.AuditMembershipAuthenticationFailure;
    }
  }
}

Infine abilitiamo l'uso del custom evaluator impostandolo nel web.config:

<configuration>
  <system.web>
    <healthMonitoring heartbeatInterval="0" enabled="true">
      <profiles>
        <clear/>
        <add name="myProfile"
            minInstances="1"
            maxLimit="Infinite"
            minInterval="00:10:00"
            custom="IWebEventCustomEvaluatorProject.MyCustomEvaluator, IWebEventCustomEvaluatorProject" />
      </profiles>
      <rules>
        <clear/>
          <add name="All Audits Default"
            eventName="myEvent"
            provider="myProvider"
            profile="myProfile"
            minInterval="00:00:30" />
      </rules>
    </healthMonitoring>
  </system.web>
</configuration>

Da notare che il metodo non determina con che frequenza l'evento viene generato, ma solo quando inviarlo al provider, cosa possibile anche per eventi non sviluppati direttamente da noi, come nel caso del WebFailureAuditEvent.

Per approndimenti si veda:

#748 - Costruire un provider di HealthMonitoring con ASP.NET 2.0
https://www.aspitalia.com/script/748/Costruire-Provider-HealthMonitoring-ASP.NET-2.0.aspx

#789 - Un custom provider per Health Monitoring con output in formato RSS
https://www.aspitalia.com/script/789/Custom-Provider-Health-Monitoring-Output-Formato-RSS.aspx

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi