Freigeben über


Teil 8: Letzte Seiten, Ausnahmebehandlung und Zusammenfassung

von Joe Stagner

Tailspin Spyworks zeigt, wie einfach es ist, leistungsstarke, skalierbare Anwendungen für die .NET-Plattform zu erstellen. Es zeigt, wie Sie die großartigen neuen Features in ASP.NET 4 verwenden, um einen Online-Shop zu erstellen, einschließlich Shopping, Checkout und Verwaltung.

In dieser Tutorialreihe werden alle Schritte zum Erstellen der Tailspin Spyworks-Beispielanwendung beschrieben. Teil 8 fügt eine Kontaktseite, Informationen zur Seite und Ausnahmebehandlung hinzu. Dies ist das Fazit der Reihe.

Kontaktseite (Senden von E-Mails von ASP.NET)

Erstellen einer neuen Seite mit dem Namen ContactUs.aspx

Erstellen Sie mit dem Designer das folgende Formular unter besonderer Berücksichtigung des ToolkitScriptManager-Steuerelements und des Editor-Steuerelements aus dem AjaxControlToolkit. .

Screenshot des neuen Formulars

Doppelklicken Sie auf die Schaltfläche "Übermitteln", um einen Click-Ereignishandler in der CodeBehind-Datei zu generieren und eine Methode zum Senden der Kontaktinformationen als E-Mail zu implementieren.

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);
   }
}

Dieser Code erfordert, dass Ihre web.config-Datei einen Eintrag im Konfigurationsabschnitt enthält, der den SMTP-Server angibt, der zum Senden von E-Mails verwendet werden soll.

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

Seite "Info"

Erstellen Sie eine Seite mit dem Namen AboutUs.aspx, und fügen Sie den gewünschten Inhalt hinzu.

Globaler Ausnahmehandler

Schließlich haben wir in der gesamten Anwendung Ausnahmen ausgelöst, und es gibt unvorhergesehene Umstände, die auch zu unbehandelten Ausnahmen in unserer Webanwendung führen.

Wir möchten nie, dass einem Websitebesucher eine unbehandelte Ausnahme angezeigt wird.

Screenshot einer nicht behandelten Ausnahme

Abgesehen von einer schrecklichen Benutzererfahrung können unbehandelte Ausnahmen auch ein Sicherheitsproblem sein.

Um dieses Problem zu beheben, implementieren wir einen globalen Ausnahmehandler.

Öffnen Sie hierzu die Datei Global.asax, und notieren Sie sich den folgenden vorab generierten Ereignishandler.

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

Fügen Sie Wie folgt Code hinzu, um den Application_Error-Handler zu implementieren.

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);
 }

Fügen Sie dann der Projektmappe eine Seite mit dem Namen Error.aspx hinzu, und fügen Sie diesen Markupausschnitt hinzu.

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

Extrahieren Sie nun im Page_Load Ereignishandler die Fehlermeldungen aus dem Anforderungsobjekt.

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

Zusammenfassung

Wir haben gesehen, dass ASP.NET WebForms es einfach macht, eine anspruchsvolle Website mit Datenbankzugriff, Mitgliedschaft, AJAX usw. zu erstellen. ziemlich schnell.

Hoffentlich haben Sie in diesem Tutorial die Tools erhalten, die Sie benötigen, um mit dem Erstellen Ihrer eigenen ASP.NET WebForms-Anwendungen zu beginnen!