Parte 8: Páginas finales, control de excepciones y conclusión

por Joe Stagner

Tailspin Spyworks muestra cómo es extraordinariamente simple crear aplicaciones eficaces y escalables para la plataforma .NET. Muestra cómo usar las excelentes características nuevas de ASP.NET 4 para crear una tienda en línea, como compras, desprotección y administración.

En esta serie de tutoriales se detallan todos los pasos realizados para compilar la aplicación de ejemplo Tailspin Spyworks. La parte 8 agrega una página de contacto, una página Acerca de y el control de excepciones. Esta es la conclusión de la serie.

Página de contacto (envío de correo electrónico desde ASP.NET)

Creación de una nueva página denominada ContactUs.aspx

Con el diseñador, cree el siguiente formulario poniendo especial cuidado para incluir ToolkitScriptManager y el control Editor del AjaxControlToolkit. .

Screenshot that shows the new form.

Haga doble clic en el botón "Enviar" para generar un controlador de eventos de clic en el archivo de código subyacente e implementar un método para enviar la información de contacto en forma de correo electrónico.

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

Este código requiere que el archivo web.config contenga una entrada en la sección de configuración que especifique el servidor SMTP que se va a usar para enviar correo.

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

Página de información

Cree una página denominada AboutUs.aspx y agregue el contenido que quiera.

Controlador de excepciones global

Por último, en toda la aplicación hemos tenido excepciones y hay circunstancias imprevistas que también provocan excepciones no controladas en nuestra aplicación web.

Nunca queremos que se muestre una excepción no controlada a un visitante del sitio web.

Screenshot that shows an unhandled exception.

Además de ser una experiencia de usuario terrible, las excepciones no controladas también pueden ser un problema de seguridad.

Para resolver este problema, implementaremos un controlador de excepciones global.

Para ello, abra el archivo Global.asax y anote el siguiente controlador de eventos generado previamente.

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

Agregue código para implementar el controlador de Application_Error de la manera siguiente.

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

A continuación, agregue una página denominada Error.aspx a la solución y agregue este fragmento de código de marcado.

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

Ahora, en el controlador de eventos Page_Load, extraiga los mensajes de error del objeto Request.

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

Conclusión

Hemos visto que ASP.NET WebForms facilita la creación de un sitio web sofisticado con acceso a bases de datos, pertenencia, AJAX, etc. muy rápido.

Esperamos que este tutorial le haya dado las herramientas que necesita para empezar a crear sus propias aplicaciones ASP.NET WebForms.