Część 8. Końcowe strony, obsługa wyjątków i podsumowanie

Autor: Joe Stagner

Tailspin Spyworks pokazuje, jak niezwykle proste jest tworzenie zaawansowanych, skalowalnych aplikacji dla platformy .NET. Pokazuje, jak używać wspaniałych nowych funkcji w ASP.NET 4 do tworzenia sklepu internetowego, w tym zakupów, wyewidencjonowania i administracji.

W tej serii samouczków szczegółowo opisano wszystkie kroki podjęte w celu utworzenia przykładowej aplikacji Tailspin Spyworks. Część 8 dodaje stronę kontaktu, informacje o stronie i obsłudze wyjątków. Jest to zakończenie serii.

Strona kontaktowa (wysyłanie wiadomości e-mail z ASP.NET)

Tworzenie nowej strony o nazwie ContactUs.aspx

Za pomocą projektanta utwórz następujący formularz, który zanotuj, aby uwzględnić kontrolkę ToolkitScriptManager i Edytor z zestawu AjaxControlToolkit. .

Zrzut ekranu przedstawiający nowy formularz.

Kliknij dwukrotnie przycisk "Prześlij", aby wygenerować procedurę obsługi zdarzeń kliknięcia w kodzie za plikiem i zaimplementuj metodę wysyłania informacji kontaktowych jako wiadomości e-mail.

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

Ten kod wymaga, aby plik web.config zawierał wpis w sekcji konfiguracji, który określa serwer SMTP do użycia do wysyłania poczty.

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

Informacje o stronie

Utwórz stronę o nazwie AboutUs.aspx i dodaj dowolną zawartość.

Globalna procedura obsługi wyjątków

Na koniec w całej aplikacji zgłaszaliśmy wyjątki i istnieją nieprzewidziane okoliczności, które zimno również powodują nieobsługiwane wyjątki w naszej aplikacji internetowej.

Nigdy nie chcemy, aby nieobsługiwany wyjątek był wyświetlany dla odwiedzających witrynę internetową.

Zrzut ekranu przedstawiający nieobsługiwany wyjątek.

Oprócz bycia strasznym środowiskiem użytkownika nieobsługiwanych wyjątków może być również problem z zabezpieczeniami.

Aby rozwiązać ten problem, wdrożymy globalną procedurę obsługi wyjątków.

W tym celu otwórz plik Global.asax i zanotuj następującą wstępnie wygenerowaną procedurę obsługi zdarzeń.

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

Dodaj kod, aby zaimplementować procedurę obsługi Application_Error w następujący sposób.

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

Następnie dodaj stronę o nazwie Error.aspx do rozwiązania i dodaj ten fragment kodu znaczników.

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

Teraz w programie obsługi zdarzeń Page_Load wyodrębnij komunikaty o błędach z obiektu żądania.

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

Podsumowanie

Widzieliśmy, że ASP.NET WebForms ułatwia tworzenie wyrafinowanej witryny internetowej z dostępem do bazy danych, członkostwem, AJAX itp. dość szybko.

Miejmy nadzieję, że ten samouczek dał Ci narzędzia potrzebne do rozpoczęcia tworzenia własnych aplikacji ASP.NET WebForms!