protected void btnRegistrarte_Click(object sender, EventArgs e)
        {
            if (nombreUsuarioTextBox.Text != null && nombreUsuarioTextBox.Text != "" &&
                contraseniaTextBox.Text != null && contraseniaTextBox.Text != "" && contraseniaTextBox.Text.Length >= 8 &&
                nombreApellidoTextBox.Text != null && nombreApellidoTextBox.Text != "" &&
                emailTextBox.Text != null && emailTextBox.Text != "" && Regex.IsMatch(emailTextBox.Text, "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*") && Regex.Replace(emailTextBox.Text, "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", String.Empty).Length == 0 &&
                dropDownListZonasHorarias.SelectedValue != "Seleccione su zona horaria")
            {
                Usuario user = new Usuario();
                user.nombre_usuario  = nombreUsuarioTextBox.Text;
                user.contrasenia     = contraseniaTextBox.Text;
                user.nombre_apellido = nombreApellidoTextBox.Text;
                user.email           = emailTextBox.Text;
                user.id_zona_horaria = int.Parse(dropDownListZonasHorarias.SelectedValue);

                try
                {
                    UsuarioLogic ul = new UsuarioLogic();

                    if (!ul.ExisteUsuario(user))
                    {
                        lblErrorNombreUsuario.Text = "";

                        Session["userACrearCuenta"]  = user;
                        Session["codigoCrearCuenta"] = GeneradorCodigos.GenerarCodigoDe6Digitos();

                        new EnvioCorreoLogic().EnviarCorreoConfirmarCorreo((Usuario)Session["userACrearCuenta"], (int)Session["codigoCrearCuenta"]);

                        Response.Redirect("~/ConfirmarCorreo.aspx", false);
                        Context.ApplicationInstance.CompleteRequest();
                    }
                    else
                    {
                        lblErrorNombreUsuario.Text = "El nombre de usuario ya se encuentra registrado";
                        ((Label)this.FindControl("lblErrorNombreUsuario")).Attributes["style"] = "color: red; display: block;";
                    }
                }
                catch (Exception ex)
                {
                    Session["error"] = ex;
                    Response.Redirect("~/Errores.aspx", false);
                    Context.ApplicationInstance.CompleteRequest();
                }
            }
            else
            {
                Response.Redirect("~/Errores.aspx", false);
                Context.ApplicationInstance.CompleteRequest();
            }
        }
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var usuarioLogic   = new UsuarioLogic();
                var logginCorrecto = usuarioLogic.ExisteUsuario(model.Username, model.Password);

                if (logginCorrecto)
                {
                    FormsAuthentication.SetAuthCookie(model.Username, false);

                    if (returnUrl == string.Empty)
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        return(RedirectToLocal(returnUrl));
                    }
                }

                return(View(model));
            }

            // No cuenta los errores de inicio de sesión para el bloqueo de la cuenta
            // Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresVerification:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            //    case SignInStatus.Failure:
            //    default:
            //        ModelState.AddModelError("", "Intento de inicio de sesión no válido.");
            //        return View(model);
            //}
            return(View(model));
        }