Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Proprietà SendMailErrorEventArgs.Handled

Indica se l'eccezione SMTP contenuta in Exception la proprietà è stata gestita.

Spazio dei nomi:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)
public bool Handled { get; set; }

Valore proprietà

Tipo: System.Boolean
se true, l'eccezione viene utilizzata e gestita da SendMailErrorEventHandler delegato. se false, l'eccezione viene generata di nuovo, incluso lo stack di chiamate e il messaggio di errore originale.
l'impostazione predefinita è false.

Handled la proprietà indica se Exception è stato gestito. L'eccezione viene generata dal provider di posta elettronica SMTP quando un messaggio di posta elettronica non può essere inviato dal ChangePassword controllare o CreateUserWizard. La causa più comune di eccezione è un errore di configurazione in Elemento <smtp> (Impostazioni di rete) il file di configurazione del computer. Sebbene un messaggio di errore come questo in genere venga individuato durante lo sviluppo e il debug di un'applicazione, server di posta elettronica può l'errata esecuzione in modo imprevisto in un ambiente di produzione ed è necessario determinare se si desidera che l'intera applicazione non riuscire in questa situazione. In caso contrario, gestire l'evento consente all'applicazione di continuare.

Se non è necessario creare un gestore eventi per SendMailError l'evento, o se si crea un gestore eventi e non Handled insieme di proprietà su false, l'applicazione Web verrà arrestata se si verifica un errore quando inviare un messaggio di posta elettronica e ASP.NET viene visualizzato un messaggio di errore. Gestire l'evento consente l'applicazione Web continuare a funzionare anche se si è verificata un'eccezione. Ciò si rivela utile quando non è critico per inviare un messaggio di posta elettronica. Ad esempio, se l'eccezione si verifica quando un utente funziona tramite una procedura guidata in più passaggi, può essere vantaggioso registrare l'esito negativo, viene visualizzato un messaggio informativo all'utente e consentire all'utente completamento della procedura guidata.

Nell'esempio di codice viene illustrata una pagina ASP.NET che utilizza un oggetto ChangePassword Il controllo Web e include un gestore eventi per SendMailError evento denominato SendMailError. L'esempio di codice seguente si presuppone che il sito Web ASP.NET sia stata configurata per utilizzare l'appartenenza e l'autenticazione basata su form di ASP.NET e che un utente è stato creato con nome e la password è noto all'utente. Per ulteriori informazioni, vedere Procedura: Implementare l'autenticazione basata su form semplice.

Se la modifica della password ha esito positivo, il codice in SendingMail il gestore eventi tenta di inviare un messaggio di posta elettronica all'utente di confermare la modifica. SMTP deve essere già configurato nel server in modo che questo esempio di codice da eseguire. Per informazioni su come configurare un server SMTP, vedere Procedura: Configurare uno il Server virtuale SMTP. Ai fini di questo esempio, non è necessario configurare un server SMTP, l'esempio viene costruito per verificare che un errore per inviare un messaggio di posta elettronica.

Se un server di posta elettronica non è configurato correttamente o un altro errore si verifica e il messaggio di posta elettronica non può essere inviato, SendMailError viene chiamata la funzione. Un messaggio visualizzato all'utente. Inoltre, un evento viene registrato nel log eventi dell'applicazione Windows dal presupposto che un'origine evento denominata MySamplesSite esiste già. Vedere l'esempio di codice riportato di seguito per creare l'origine evento specificata. Per ulteriori informazioni sulla creazione di un'origine evento, vedere Gestione degli eventi server nelle pagine Web ASP.NET. Handled proprietà di SendMailErrorEventArgs l'oggetto è impostato su true per indicare che l'errore è stato gestito.


<%@ Page Language="C#" AutoEventWireup="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  void MySendingMail(object sender, MailMessageEventArgs e)
  {
    Message1.Text = "Sent mail to you to confirm the password change.";
  }

  void MySendMailError(object sender, SendMailErrorEventArgs e)
  {
    Message1.Text = "Could not send email to confirm password change.";

    // The MySamplesSite event source has already been created by an administrator.
    System.Diagnostics.EventLog myLog = new System.Diagnostics.EventLog();
    myLog.Log = "Application";
    myLog.Source = "MySamplesSite";
    myLog.WriteEntry(
        "Sending mail via SMTP failed with the following error: " + 
        e.Exception.Message.ToString(), 
        System.Diagnostics.EventLogEntryType.Error);

    e.Handled = true;
  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>ChangePassword including a SendMailError Event</title>
</head>
<body>
  <form id="form1" runat="server">
  <div style="text-align:center">

    <h1>ChangePassword</h1>

    <asp:LoginView ID="LoginView1" Runat="server" 
      Visible="true">
      <LoggedInTemplate>
        <asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." />
        <br />
      </LoggedInTemplate>
      <AnonymousTemplate>
        You are not logged in
      </AnonymousTemplate>
    </asp:LoginView><br />

    <asp:ChangePassword ID="ChangePassword1" Runat="server"
      BorderStyle="Solid" 
      BorderWidth="1" 
      CancelDestinationPageUrl="~/Default.aspx" 
      DisplayUserName="true"
      OnSendingMail="MySendingMail" 
      OnSendMailError="MySendMailError" 
      ContinueDestinationPageUrl="~/Default.aspx" >
      <MailDefinition 
        BodyFileName="~\MailFiles\ChangePasswordMail.htm" 
        Subject="Activity information for you">
        <EmbeddedObjects>
          <asp:EmbeddedMailObject Name="LoginGif" Path="~\MailFiles\Login.gif" />
          <asp:EmbeddedMailObject Name="PrivacyNoticeTxt" Path="~\MailFiles\PrivacyNotice.txt" />
        </EmbeddedObjects>
      </MailDefinition>
    </asp:ChangePassword><br />

    <asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br />

    <asp:HyperLink ID="HyperLink1" Runat="server" 
      NavigateUrl="~/Default.aspx">
      Home
    </asp:HyperLink>

  </div>
  </form>
</body>
</html>


Utilizzare il seguente esempio di codice se è necessario aggiungere a livello di codice origine evento denominata MySamplesSite il registro applicazioni. questa origine evento deve esistere in modo che il primo esempio di codice per funzionare correttamente. Nell'esempio di codice richiede privilegi di amministratore.


#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

#endregion

namespace CreateEventSource
{
    class Program
    {
        static void Main(string[] args)
        {

            try
            {
                // Create the source, if it does not already exist.
                if (!EventLog.SourceExists("MySamplesSite"))
                {
                    EventLog.CreateEventSource("MySamplesSite", "Application");
                    Console.WriteLine("Creating Event Source");
                }

                // Create an EventLog instance and assign its source.
                EventLog myLog = new EventLog();
                myLog.Source = "MySamplesSite";

                // Write an informational entry to the event log.    
                myLog.WriteEntry("Testing writing to event log.");

                Console.WriteLine("Message written to event log.");
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine("{0}", e.ToString());
            }
        }
    }
}


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.