Condividi tramite


Parte 8: Pagine finali, gestione delle eccezioni e conclusione

di Joe Stagner

Tailspin Spyworks dimostra quanto sia straordinariamente semplice creare applicazioni potenti e scalabili per la piattaforma .NET. Mostra come usare le nuove funzionalità di ASP.NET 4 per creare un negozio online, tra cui shopping, checkout e amministrazione.

Questa serie di esercitazioni illustra in dettaglio tutti i passaggi eseguiti per compilare l'applicazione di esempio Tailspin Spyworks. La parte 8 aggiunge una pagina di contatto, informazioni sulla pagina e sulla gestione delle eccezioni. Questa è la conclusione della serie.

Pagina contatti (invio di posta elettronica da ASP.NET)

Creare una nuova pagina denominata ContactUs.aspx

Usando la finestra di progettazione, creare il modulo seguente prendendo nota speciale per includere ToolkitScriptManager e il controllo Editor da AjaxControlToolkit. .

Screenshot che mostra il nuovo modulo.

Fare doppio clic sul pulsante "Invia" per generare un gestore eventi click nel file code behind e implementare un metodo per inviare le informazioni di contatto come posta elettronica.

protected void ImageButton_Submit_Click(object sender, ImageClickEventArgs e)
  {
  try 
    {
    MailMessage mMailMessage = new MailMessage();
    mMailMessage.From = new MailAddress(HttpUtility.HtmlEncode(TextBoxEmail.Text));
    mMailMessage.To.Add(new MailAddress("Your Email Here")); 

    // mMailMessage.Bcc.Add(new MailAddress(bcc));
    // mMailMessage.CC.Add(new MailAddress(cc));

   mMailMessage.Subject = "From:" + HttpUtility.HtmlEncode(TextBoxYourName.Text) + "-" + 
                                    HttpUtility.HtmlEncode(TextBoxSubject.Text);
   mMailMessage.Body = HttpUtility.HtmlEncode(EditorEmailMessageBody.Content); 
   mMailMessage.IsBodyHtml = true;
   mMailMessage.Priority = MailPriority.Normal;
   SmtpClient mSmtpClient = new SmtpClient();
   mSmtpClient.Send(mMailMessage);
   LabelMessage.Text = "Thank You - Your Message was sent.";
   }
 catch (Exception exp)
   {
   throw new Exception("ERROR: Unable to Send Contact - " + exp.Message.ToString(), exp);
   }
}

Questo codice richiede che il file di web.config contenga una voce nella sezione di configurazione che specifica il server SMTP da usare per l'invio di posta elettronica.

<system.net>
        <mailSettings>
            <smtp>
                <network
                     host="mail..com"
                     port="25"
                     userName=""
                     password="" />
            </smtp>
        </mailSettings>
    </system.net>

Informazioni sulla pagina

Creare una pagina denominata AboutUs.aspx e aggiungere qualsiasi contenuto desiderato.

Gestore eccezioni globali

Infine, in tutta l'applicazione sono state generate eccezioni e ci sono circostanze impreviste che causano anche eccezioni non gestite nell'applicazione Web.

Non si vuole mai visualizzare un'eccezione non gestita a un visitatore del sito Web.

Screenshot che mostra un'eccezione non gestita.

Oltre a essere un'esperienza utente terribile non gestita può anche essere un problema di sicurezza.

Per risolvere questo problema, verrà implementato un gestore di eccezioni globale.

A tale scopo, aprire il file Global.asax e prendere nota del gestore eventi pre-generato seguente.

void Application_Error(object sender, EventArgs e)
 {
 // Code that runs when an unhandled error occurs
 }

Aggiungere codice per implementare il gestore Application_Error come indicato di seguito.

void Application_Error(object sender, EventArgs e)
 {
    Exception myEx =  Server.GetLastError();
    String RedirectUrlString = "~/Error.aspx?InnerErr=" + 
        myEx.InnerException.Message.ToString() + "&Err=" + myEx.Message.ToString();
    Response.Redirect(RedirectUrlString);
 }

Aggiungere quindi una pagina denominata Error.aspx alla soluzione e aggiungere questo frammento di markup.

<center>
  <div class="ContentHead">ERROR</div><br /><br />
  <asp:Label ID="Label_ErrorFrom" runat="server" Text="Label"></asp:Label><br /><br />
  <asp:Label ID="Label_ErrorMessage" runat="server" Text="Label"></asp:Label><br /><br />
</center>

Nel gestore eventi Page_Load estrarre i messaggi di errore dall'oggetto Request.

protected void Page_Load(object sender, EventArgs e)
{
    Label_ErrorFrom.Text = Request["Err"].ToString();
    Label_ErrorMessage.Text = Request["InnerErr"].ToString();
}

Conclusione

Abbiamo visto che ASP.NET WebForms semplifica la creazione di un sito Web sofisticato con accesso al database, appartenenza, AJAX e così via. abbastanza rapidamente.

Spero che questa esercitazione abbia fornito gli strumenti necessari per iniziare a creare applicazioni WebForms ASP.NET personalizzate.