Compartilhar via


Parte 8: Páginas finais, tratamento de exceção e conclusão

por Joe Stagner

A Tailspin Spyworks demonstra como é extraordinariamente simples criar aplicativos avançados e escalonáveis para a plataforma .NET. Ele mostra como usar os ótimos novos recursos no ASP.NET 4 para criar uma loja online, incluindo compras, check-out e administração.

Esta série de tutoriais detalha todas as etapas executadas para criar o aplicativo de exemplo Tailspin Spyworks. A parte 8 adiciona uma página de contato, sobre a página e o tratamento de exceções. Esta é a conclusão da série.

Página Contato (Enviando email de ASP.NET)

Criar uma nova página chamada ContactUs.aspx

Usando o designer, crie o formulário a seguir tomando nota especial para incluir o ToolkitScriptManager e o controle Editor do AjaxControlToolkit. .

Captura de tela que mostra o novo formulário.

Clique duas vezes no botão "Enviar" para gerar um manipulador de eventos de clique no arquivo code-behind e implementar um método para enviar as informações de contato como um email.

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

Esse código requer que seu arquivo web.config contenha uma entrada na seção de configuração que especifica o servidor SMTP a ser usado para enviar emails.

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

Sobre a Página

Crie uma página chamada AboutUs.aspx e adicione o conteúdo desejado.

Manipulador de exceção global

Por fim, em todo o aplicativo geramos exceções e há circunstâncias imprevistas que também causam exceções sem tratamento em nosso aplicativo Web.

Nunca queremos que uma exceção sem tratamento seja exibida para um visitante do site.

Captura de tela que mostra uma exceção sem tratamento.

Além de ser uma terrível experiência do usuário, exceções sem tratamento também podem ser um problema de segurança.

Para resolver esse problema, implementaremos um manipulador de exceção global.

Para fazer isso, abra o arquivo Global.asax e anote o manipulador de eventos pré-gerado a seguir.

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

Adicione código para implementar o manipulador de Application_Error da seguinte maneira.

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

Em seguida, adicione uma página chamada Error.aspx à solução e adicione esse snippet de marcação.

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

Agora, no manipulador de eventos Page_Load, extraia as mensagens de erro do Objeto de Solicitação.

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

Conclusão

Vimos que ASP.NET WebForms facilita a criação de um site sofisticado com acesso ao banco de dados, associação, AJAX etc. muito rapidamente.

Espero que este tutorial tenha dado a você as ferramentas necessárias para começar a criar seus próprios aplicativos ASP.NET WebForms!