Поделиться через


Часть 8. Последние страницы, обработка исключений и заключение

Джо Стагнер

Tailspin Spyworks демонстрирует, насколько просто создавать мощные масштабируемые приложения для платформы .NET. Здесь показано, как использовать новые функции в ASP.NET 4 для создания интернет-магазина, включая покупки, оформления заказа и администрирования.

В этой серии учебников подробно описаны все шаги по созданию примера приложения Tailspin Spyworks. Часть 8 добавляет страницу контактов, страницу about и обработку исключений. Это завершение серии.

Страница контактов (отправка электронной почты из ASP.NET)

Создание новой страницы с именем ContactUs.aspx

С помощью конструктора создайте следующую форму с особым примечанием, чтобы включить ToolkitScriptManager и элемент управления Editor из AjaxControlToolkit. .

Снимок экрана: новая форма.

Дважды щелкните кнопку "Отправить", чтобы создать обработчик событий щелчка в файле кода программной части и реализовать метод для отправки контактных данных в виде сообщения электронной почты.

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

Этот код требует, чтобы файл web.config содержал запись в разделе конфигурации, которая указывает SMTP-сервер, используемый для отправки почты.

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

Страница "О программе"

Создайте страницу с именем AboutUs.aspx и добавьте любое содержимое.

Глобальный обработчик исключений

Наконец, во всем приложении мы вызывали исключения, и существуют непредвиденные обстоятельства, которые также вызывают необработанные исключения в нашем веб-приложении.

Мы никогда не хотим, чтобы необработанное исключение отображалось для посетителей веб-сайта.

Снимок экрана: необработанное исключение.

Помимо ужасного взаимодействия с пользователем необработанные исключения также могут быть проблемой безопасности.

Чтобы решить эту проблему, мы реализуем глобальный обработчик исключений.

Для этого откройте файл Global.asax и обратите внимание на следующий предварительно созданный обработчик событий.

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

Добавьте код для реализации обработчика Application_Error, как показано ниже.

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

Затем добавьте в решение страницу с именем Error.aspx и добавьте этот фрагмент разметки.

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

Теперь в обработчике событий Page_Load извлеките сообщения об ошибках из объекта запроса.

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

Заключение

Мы видели, что ASP.NET WebForms позволяет легко создать сложный веб-сайт с доступом к базе данных, членством, AJAX и т. д. довольно быстро.

Надеемся, что в этом руководстве есть средства, необходимые для начала создания собственных приложений ASP.NET WebForms!