Como: Enviar email for integridade Monitoring Notifications

Você pode configurar um aplicativo ASP.NET para enviar um email de notificação quando ocorre um evento de Web de monitoração de integridade do ASP.NET.Para fazer isso, você pode configurar um dos provedores de email de eventos da Web disponíveis.

O sistema de monitoração de integridade do ASP.NET vem com vários provedores de eventos que consomem dados de evento de Web de monitoração de integridade.Somente os provedores de eventos EventLogWebEventProvider, SqlWebEventProvider e WmiWebEventProvider são pré-configurados no arquivo web.config de raiz.Este tópico descreve como adicionar configurações de provedores evento de Web de email e ativar os provedores para escutar eventos específicos.

Para obter uma lista de eventos da Web que seu provedor pode escutar, consulte o elemento <eventMappings> no arquivo web.config de raiz, ou consulte a seção "eventos da Web" de Visão Geral do Monitoramento da Integridade do ASP.NET.

Enviar email de seu aplicativo da Web

Os exemplos de código deste tópico requerem que o aplicativo da Web seja configurado para enviar mensagens de email.O procedimento a seguir mostra como configurar o aplicativo se você já tiver o serviço de protocolo de transferência de email simples (SMTP) instalado e configurado em seu servidor Web e ter acesso a um servidor SMTP que pode entregar mensagens de email.Para obter mais informações, consulte Como: Instalar e configurar servidores virtual SMTP no IIS 6.0.

Para configurar seu aplicativo ASP.NET para enviar email

  • Abra o arquivo web.config para seu aplicativo e configure o elemento <mailSettings> dentro da seção <System.Net>.Você precisará especificar um método de entrega do atributo deliveryMethod do elemento <SMTP> e o nome do servidor SMTP no atributo host do elemento <rede>.Também é recomendável que você defina o atributo defaultCredentials como true.(Outros atributos estão disponíveis e estão documentados nos tópicos de elemento.)

    As configurações podem parecer com o exemplo a seguir.

    <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>
    

Configurando os provedores de email

Para configurar a provedor de eventos de Web SimpleMailWebEventProvider

  1. Abra o arquivo web.config para seu aplicativo e adicione um novo elemento <provedores> dentro do elemento <healthMonitoring> da seção <system.web>.Esse novo elemento providers é onde você irá configurar o provedor de eventos Web SimpleMailWebEventProvider.Esse provedor está incluído com o sistema de monitoração de integridade do ASP.NET, mas é não pré-configurado para você no arquivo web.config de raiz.

    As configurações podem parecer com o exemplo a seguir.

    <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>
    

    Para os propósitos deste procedimento, desative o buffer de eventos definindo o atributo buffer como false.O atributo name é arbitrário, e ele é usado para identificar o provedor na próxima etapa.Altere os atributos to e from para seu próprio email para concluir as etapas de teste mais adiante neste procedimento.

  2. Adicione um novo elemento <regras> dentro do elemento <healthMonitoring>.Esse novo elemento rules configura os provedores email para escutarem a todos os eventos da Web.

    As configurações podem parecer com o exemplo a seguir.

    <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>
    

    O atributo provider é o mesmo que o atributo name do seu elemento providers da etapa anterior.O atributo eventName desse elemento rules é o mesmo que o atributo de nome do elemento eventMappings pré-configurado no arquivo web.config de raiz.Essa configuração enviará um mensagem de email para cada evento da Web que ocorrer no seu aplicativo ASP.NET.Isso inclui, mas não está limitado a, início e término de aplicativo, alterações de configuração e as solicitações.

    Para os propósitos deste procedimento, defina seu elemento rules e seu elemento provider da etapa anterior no mesmo arquivo de configuração.Como alternativa, o elemento provider pode existir em um arquivo de configuração que é superior na cadeia de arquivos de configuração para o arquivo web.config de raiz.

  3. Teste sua configuração, solicitando uma página do seu aplicativo.É possível que você já tenha recebido um mensagem de email se você alterou alguma configuração, o que poderia levantar um evento de reinicialização do aplicativo.O email que você receber pode ter uma linha de assunto e corpo da mensagem semelhante ao exemplo de mensagem a seguir.

    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 --------------- ---------------

Para configurar a provedor de eventos de Web TemplatedMailWebEventProvider

  1. Abra o arquivo web.config para seu aplicativo e adicione um novo elemento <provedores> dentro do elemento <healthMonitoring> da seção <system.web>.Esse novo elemento providers é onde você irá configurar o provedor de eventos Web TemplatedMailWebEventProvider.Esse provedor está incluído com o sistema de monitoração de integridade do ASP.NET, mas é não pré-configurado para você no arquivo web.config de raiz.

    As configurações podem parecer com o exemplo a seguir.

    <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>
    

    Para os propósitos deste procedimento, ative o buffer de eventos definindo o atributo buffer como false.O valor do atributo bufferMode, Notification, é predefinido no arquivo web.config de raiz.Para obter mais informações sobre buffers, consulte Usando Eventos de Monitoramento de Integridade do ASP.NET..

    O atributo name é arbitrário, e ele é usado para identificar o provedor na próxima etapa.Altere os atributos to e from para seu próprio email para concluir as etapas de teste mais adiante neste procedimento.

  2. Adicione um novo elemento <regras> dentro do elemento <healthMonitoring>.Esse novo elemento rules configura os provedores email para escutarem a todos os eventos da Web.

    As configurações podem parecer com o exemplo a seguir.

    <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>
    

    O atributo provider é o mesmo que o atributo name do seu elemento providers da etapa anterior.O atributo eventName desse atributo rules é o mesmo que o atributo name do elemento eventMappings pré-configurado no arquivo web.config de raiz.Essa configuração enviará um mensagem de email para cada solicitação feita para uma página ou outro recurso em seu aplicativo ASP.NET.

  3. Crie um arquivo de modelo de email chamado Template.aspx e coloque-o na raiz do seu aplicativo.Este nome de arquivo é o valor do atributo template do elemento providers.Quando ocorre um evento de solicitação no seu aplicativo, o arquivo de modelo é preenchido com dados usando expressões de sequências e enviada como uma mensagem de email de notificação.Para obter informações sobre como usar expressões, consulte Visão Geral sobre Expressões do ASP.NET.

    O arquivo de modelo pode parecer com o exemplo a seguir.

    <%@ 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>
    
  4. Teste sua configuração, solicitando uma página do seu aplicativo.Você deve receber rapidamente uma mensagem de email que inclui uma linha de assunto e corpo de mensagem semelhante à mensagem de exemplo a seguir.

    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>
    

Consulte também

Referência

<healthMonitoring> Element

eventMappings elemento para healthMonitoring (ASP.NET Settings Esquema)

provedores de elemento para healthMonitoring (ASP.NET Settings Esquema)

regras de elemento para healthMonitoring (ASP.NET Settings Esquema)

< smtp > Elemento (configurações de rede)

Outros recursos

Visão Geral do Monitoramento da Integridade do ASP.NET

Armazenando Eventos de Monitoramento de Integridade do ASP.NET.

Configurando a Monitoração de Integridade do ASP.NET