Procedura: inviare notifiche di posta elettronica per il monitoraggio dello stato
Aggiornamento: novembre 2007
È possibile configurare un'applicazione ASP.NET in modo che venga inviata una notifica di posta elettronica quando si verifica un evento Web relativo al monitoraggio dello stato di ASP.NET. A tale scopo, è possibile configurare uno dei provider di eventi Web di posta elettronica disponibili.
Il sistema di monitoraggio dello stato di ASP.NET mette a disposizione diversi provider di eventi che utilizzano dati di eventi Web relativi al monitoraggio dello stato. Solo i provider di eventi EventLogWebEventProvider, SqlWebEventProvider e WmiWebEventProvider sono preconfigurati nel file Web.config di primo livello. In questo argomento viene descritto come aggiungere impostazioni di configurazione per provider di eventi Web di posta elettronica e come attivare tali provider in modo che restino in attesa di determinati eventi.
Per un elenco degli eventi Web rilevabili dai provider, vedere l'elemento <eventMappings> nel file Web.config di primo livello o la sezione "Eventi Web" in Cenni preliminari sul monitoraggio dello stato di ASP.NET.
Invio di messaggi di posta elettronica da un'applicazione Web
Per gli esempi di codice riportati in questo argomento è richiesta un'applicazione Web configurata per l'invio di messaggi di posta elettronica. Nella procedura riportata di seguito viene illustrato come configurare un'applicazione, partendo dal presupposto che il servizio SMTP (Simple Mail Transfer Protocol) sia già installato e configurato sul server Web e che sia possibile accedere a un server SMTP per l'invio di messaggi di posta elettronica. Per ulteriori informazioni, vedere la classe Procedura: installare e configurare server virtuali SMTP in IIS 6.0.
Per configurare un'applicazione ASP.NET per l'invio di messaggi di posta elettronica
Aprire il file Web.config per l'applicazione e configurare l'elemento <mailSettings> all'interno della sezione <system.net>. È necessario specificare un metodo di invio nell'attributo deliveryMethod dell'elemento <smtp> e il nome del server SMTP nell'attributo host dell'elemento <network>. Si consiglia inoltre di impostare l'attributo defaultCredentials su true. Sono anche disponibili altri attributi, descritti negli argomenti relativi agli elementi.
Le impostazioni di configurazione potrebbero essere simili a quelle riportate nel seguente esempio:
<configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.net> <mailSettings> <smtp deliveryMethod="Network"> <network defaultCredentials="true" host="smtpservername" /> </smtp> </mailSettings> </system.net> <!-- Other configuration settings. --> </configuration>
Configurazione dei provider di posta elettronica
Per configurare il provider di eventi Web SimpleMailWebEventProvider
Aprire il file Web.config per l'applicazione e aggiungere un nuovo elemento <providers> all'interno dell'elemento <healthMonitoring> della sezione <system.web>. All'interno di questo nuovo elemento providers si configurerà il provider di eventi Web SimpleMailWebEventProvider. Sebbene questo provider sia incluso nel sistema di monitoraggio dello stato di ASP.NET, non è preconfigurato nel file Web.config di primo livello.
Le impostazioni di configurazione potrebbero essere simili a quelle riportate nel seguente esempio:
<configuration> <system.web> <healthMonitoring enabled="true" heartbeatInterval="0"> <providers> <add name="exampleMailWebEventProvider" type="System.Web.Management.SimpleMailWebEventProvider" to="someone@contoso.com" from="someone@contoso.com" buffer="false" subjectPrefix="WebEvent has fired" /> </providers> </healthMonitoring> </system.web> <!-- Other configuration settings. --> </configuration>
Ai fini di questa procedura, disattivare la memorizzazione degli eventi nel buffer impostando l'attributo buffer su false. L'attributo name è arbitrario e viene utilizzato per identificare il provider nel passaggio successivo. Impostare gli attributi to e from sul proprio indirizzo di posta elettronica per completare i passaggi di verifica più avanti in questa procedura.
Aggiungere un nuovo elemento <rules> all'interno dell'elemento <healthMonitoring>. All'interno di questo nuovo elemento rules si configureranno i provider di posta elettronica in modo che restino in attesa di tutti gli eventi Web.
Le impostazioni di configurazione potrebbero essere simili a quelle riportate nel seguente esempio:
<configuration> <system.web> <healthMonitoring enabled="true" heartbeatInterval="0"> <!-- <providers> element from the previous step --> <rules> <add name="Testing Mail Event Providers" eventName="All Events" provider="exampleMailWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" custom="" /> </rules> </healthMonitoring> </system.web> <!-- Other configuration settings. --> </configuration>
L'attributo provider è uguale all'attributo name dell'elemento providers discusso nel passaggio precedente. L'attributo eventName di questo elemento rules è uguale all'attributo name dell'elemento eventMappings preconfigurato nel file Web.config di primo livello. Con questa configurazione verrà inviato un messaggio di posta elettronica tutte le volte che si verifica un evento Web nell'applicazione ASP.NET, ad esempio all'avvio e all'arresto dell'applicazione, quando la configurazione viene modificata e in corrispondenza di richieste.
Ai fini di questa procedura, definire l'elemento rules e l'elemento provider discussi nel passaggio precedente nello stesso file di configurazione. In alternativa, l'elemento provider può esistere in un file di configurazione a un livello superiore nella catena dei file di configurazione, verso il file Web.config di primo livello.
Verificare la configurazione richiedendo una pagina dall'applicazione. È possibile che si sia già ricevuto un messaggio di posta elettronica se sono state modificate le impostazioni di configurazione, in quanto tale operazione genera un evento di riavvio dell'applicazione. Il messaggio di posta elettronica ricevuto potrebbe presentare un oggetto e un corpo simili a quelli riportati nel seguente messaggio di esempio:
Subject: Event Notification 1, part 1: WebEvent has fired <event> Body:
Application Information --------------- Application domain: /LM/w3svc/1/ROOT/ Trust level: Full Application Virtual Path: / Application Path: Machine name:
Events --------------- ---------------
Per configurare il provider di eventi Web TemplatedMailWebEventProvider
Aprire il file Web.config per l'applicazione e aggiungere un nuovo elemento <providers> all'interno dell'elemento <healthMonitoring> della sezione <system.web>. All'interno di questo nuovo elemento providers si configurerà il provider di eventi Web TemplatedMailWebEventProvider. Sebbene questo provider sia incluso nel sistema di monitoraggio dello stato di ASP.NET, non è preconfigurato nel file Web.config di primo livello.
Le impostazioni di configurazione potrebbero essere simili a quelle riportate nel seguente esempio:
<configuration> <system.web> <healthMonitoring enabled="true" heartbeatInterval="0"> <providers> <add name="exampleTemplatedMailWebEventProvider" type="System.Web.Management.TemplatedMailWebEventProvider" template="template.aspx" detailedTemplateErrors="true" to="someone@contoso.com" from="someone@contoso.com" buffer="true" bufferMode="Notification" maxMessagesPerNotification="1" maxEventsPerMessage="1" /> </providers> </healthMonitoring> </system.web> <!-- Other configuration settings. --> </configuration>
Ai fini di questa procedura, disattivare la memorizzazione degli eventi nel buffer impostando l'attributo buffer su false. Il valore dell'attributo bufferMode, Notification, è preconfigurato nel file Web.config di primo livello. Per ulteriori informazioni sulla memorizzazione nel buffer, vedere Estensione degli eventi di monitoraggio dello stato ASP.NET.
L'attributo name è arbitrario e viene utilizzato per identificare il provider nel passaggio successivo. Impostare gli attributi to e from sul proprio indirizzo di posta elettronica per completare i passaggi di verifica più avanti in questa procedura.
Aggiungere un nuovo elemento <rules> all'interno dell'elemento <healthMonitoring>. All'interno di questo nuovo elemento rules si configureranno i provider di posta elettronica in modo che restino in attesa di tutti gli eventi Web.
Le impostazioni di configurazione potrebbero essere simili a quelle riportate nel seguente esempio:
<configuration> <system.web> <healthMonitoring enabled="true" heartbeatInterval="0"> <!-- <providers> element from the previous step --> <rules> <add name="Testing Templated Mail Event Providers" eventName="Request Processing Events" provider="exampleTemplatedMailWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" custom="" /> </rules> </healthMonitoring> </system.web> <!-- Other configuration settings. --> </configuration>
L'attributo provider è uguale all'attributo name dell'elemento providers discusso nel passaggio precedente. L'attributo eventName di questo attributo rules è uguale all'attributo name dell'elementoeventMappings preconfigurato nel file Web.config di primo livello. Con questa configurazione verrà inviato un messaggio di posta elettronica per ogni richiesta di una pagina o di un altro tipo di risorsa effettuata dall'applicazione ASP.NET.
Creare un file di modello di posta elettronica denominato Template.aspx nella directory principale dell'applicazione. Il nome di questo file corrisponde al valore dell'attributo template dell'elemento providers. Quando si verifica un evento di richiesta nell'applicazione, nel file di modello vengono inseriti dati utilizzando espressioni in formato stringa e il risultato viene inviato come messaggio di posta elettronica di notifica. Per informazioni sull'utilizzo delle espressioni, vedere Cenni preliminari sulle espressioni ASP.NET.
Il file di modello potrebbe essere simile a quello riportato nel seguente esempio:
<%@ Page Language="cs" %> <%@ Import Namespace="System.Web.Management" %> <script > void Page_Load() { MailEventNotificationInfo info = TemplatedMailWebEventProvider.CurrentNotification; Label0.Text = "EventsDiscardedByBuffer: " + info.EventsDiscardedByBuffer + '\n'; Label1.Text = "EventsInBuffer: " + info.EventsInBuffer + '\n'; Label2.Text = "NotificationSequence: " + info.NotificationSequence + '\n'; Label3.Text = "NotificationType: " + info.NotificationType + '\n'; Label4.Text = "EventsInNotification: " + info.EventsInNotification + '\n'; Label5.Text = "EventsRemaining: " + info.EventsRemaining + '\n'; Label6.Text = "MessagesInNotification: " + info.MessagesInNotification + '\n'; Label7.Text = "eventsDiscardedDueToMessageLimit: " + info.EventsDiscardedDueToMessageLimit + '\n'; Label8.Text = "messageSequence: " + info.MessageSequence + '\n'; Label9.Text = "LastNotificationUtc: " + info.LastNotificationUtc.ToLocalTime().ToString() + '\n'; EventList.DataSource = info.Events; EventList.DataBind(); } </script> <asp:Label id="Label0" /><p /> <asp:Label id="Label1" /><p /> <asp:Label id="Label2" /><p /> <asp:Label id="Label3" /><p /> <asp:Label id="Label4" /><p /> <asp:Label id="Label5" /><p /> <asp:Label id="Label6" /><p /> <asp:Label id="Label7" /><p /> <asp:Label id="Label8" /><p /> <asp:Label id="Label9" /><p /> <asp:DataList id="EventList" > <ItemTemplate> Event Received Sequence: <%# DataBinder.Eval(Container.DataItem, "EventSequence") %><br> Details: <%# Container.DataItem.ToString() %> </ItemTemplate> </asp:DataList>
Verificare la configurazione richiedendo una pagina dall'applicazione. Si riceverà rapidamente un messaggio di posta elettronica che include un oggetto e un corpo simili a quelli riportati nel seguente messaggio di esempio:
Subject: Event Notification 1, part 1: <event> Body: EventsDiscardedByBuffer: 0 EventsInBuffer: 0 NotificationSequence: 1 NotificationType: Flush EventsInNotification: 1 EventsRemaining: 0 MessagesInNotification: 1 eventsDiscardedDueToMessageLimit: 0 messageSequence: 1 LastNotificationUtc: 1/1/0001 12:00:00 AM Event Received Sequence: 1 Details: <event information>
Vedere anche
Riferimenti
Elemento healthMonitoring (schema delle impostazioni ASP.NET)
Elemento eventMappings per healthMonitoring (schema delle impostazioni ASP.NET)
Elemento providers per healthMonitoring (schema delle impostazioni ASP.NET)
Elemento rules per healthMonitoring (schema delle impostazioni ASP.NET)
Elemento <smtp> (Impostazioni di rete)
Altre risorse
Cenni preliminari sul monitoraggio dello stato di ASP.NET
Memorizzazione nel buffer degli eventi di monitoraggio dello stato di ASP.NET