第 8 部分:最终页面、异常处理和结论

作者 :Joe Stagner

Tailspin Spyworks 演示了为 .NET 平台创建强大且可缩放的应用程序是多么简单。 它展示了如何使用 ASP.NET 4 中的出色新功能来构建在线商店,包括购物、结账和管理。

本教程系列详细介绍了生成 Tailspin Spyworks 示例应用程序所执行的所有步骤。 第 8 部分添加了联系人页面、关于页面和异常处理。 这是该系列的结论。

联系人页面 (从 ASP.NET) 发送电子邮件

创建名为 ContactUs.aspx 的新页面

使用设计器创建以下窗体,并特别记下,以包括 AjaxControlToolkit 中的 ToolkitScriptManager 和 Editor 控件。 .

显示新窗体的屏幕截图。

双击“提交”按钮,在代码隐藏文件中生成单击事件处理程序,并实现将联系人信息作为电子邮件发送的方法。

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 的页面,并添加喜欢的任何内容。

全局异常处理程序

最后,在整个应用程序中,我们引发了异常,并且存在不可预见的情况,寒冷也会导致 Web 应用程序中未经处理的异常。

我们绝不希望向网站访问者显示未经处理的异常。

显示未经处理的异常的屏幕截图。

除了是糟糕的用户体验,未经处理的异常也可能是一个安全问题。

为了解决此问题,我们将实现全局异常处理程序。

为此,请打开 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 应用程序所需的工具!