Часть 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!