Część 8: Końcowe strony, obsługa wyjątków i zakończenie

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 kontaktu (wysyłanie wiadomości e-mail z ASP.NET)

Tworzenie nowej strony o nazwie ContactUs.aspx

Korzystając z projektanta, utwórz następujący formularz, zwracając szczególną uwagę, aby dołączyć kontrolę ToolkitScriptManager i Edytor z zestawu AjaxControlToolkit. .

Zrzut ekranu przedstawiający nowy formularz.

Kliknij dwukrotnie przycisk "Prześlij", aby wygenerować program obsługi zdarzeń kliknięcia w kodzie za plikiem i zaimplementować 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>

Strona o nas

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

Globalna procedura obsługi wyjątków

Ponadto w całej naszej aplikacji zgłaszaliśmy wyjątki i istnieją nieprzewidziane okoliczności, które mogą również prowadzić do nieobsługiwanych wyjątków w naszej aplikacji internetowej.

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

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

Oprócz tego, że nieobsługiwane wyjątki są koszmarem dla doświadczenia użytkownika, mogą również stanowić problem z bezpieczeństwem.

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

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

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

Dodaj kod, aby zaimplementować program 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 do rozwiązania stronę o nazwie Error.aspx i dodaj ten fragment 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.

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