¿Por qué la cookie de autenticación de formularios ASP.NET no autentica al usuario?

Tengo un sitio que usa el SqlMembershipProvider y FormsAuthentication predeterminados. Puedo usar los controles de inicio de sesión integrados y / o llamar mediante programación a todos los métodos para autenticar a un usuario y obtener el mismo resultado: el usuario se autentica y se crea una cookie, pero la cookie no parece ser válida ya que puedo ' No acceda a ninguna página que requiera autenticación.

No hay un código real para mostrar para el Control de inicio de sesión predeterminado, ya que debería "funcionar", pero aquí está el código personalizado que probé:

protected void ctrlLogin_Authenticate(object sender, AuthenticateEventArgs e)
{
   if (Membership.ValidateUser(ctrlLogin.UserName, ctrlLogin.Password))
   {
      FormsAuthentication.RedirectFromLoginPage(ctrlLogin.UserName, ctrlLogin.RememberMeSet);
      /*
       * I also tried this:
      FormsAuthentication.SetAuthCookie(ctrlLogin.UserName, ctrlLogin.RememberMeSet);
      if (!String.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
         Response.Redirect(Request.QueryString["ReturnUrl"]);
      Response.Redirect("/index.aspx");
       */
   }
   else
   {
      ctrlLogin.FailureText = "Invalid Username/Password Combination";
   }
}

Con este código, Membership.ValidateUser () tiene éxito, y ambos FormsAuthentication.RedirectFromLoginPage () y FormsAuthentication.RedirectFromLoginPage () establecieron correctamente una cookie - esa cookie simplemente no funciona para verificar mi autenticación. He confirmado esto eliminando todas mis cookies y viendo cómo se crean nuevamente con FireCookie. El nombre de la cookie coincide con lo que tengo en mi web.config, el dominio es "/" y la fecha de vencimiento es la esperada (ver más abajo).

Aquí están las secciones relevantes de mi web.config:

<authentication mode="Forms">
  <forms loginUrl="~/login/index.aspx" name=".SoeAuth" protection="All"
    slidingExpiration="true" timeout="525599" domain=""></forms>
</authentication>
<membership defaultProvider="SqlMembershipProvider">
  <providers>
    <add connectionStringName="[MY_CS]" applicationName="[MY_APPNAME]"
      minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
      enablePasswordReset="true" passwordFormat="Hashed" requiresUniqueEmail="true"
      name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
      requiresQuestionAndAnswer="false"/>
  </providers>
</membership>

e debe tener en cuenta que también agregué una entrada machineKey en mi archivo web.config según una sugerencia de una pregunta muy similar aquí (que no resolvió mi problema). Además, como referencia, el tiempo de espera = 525599 anterior es 1 minuto menos de un año para mis cookies persistentes.

Respuestas a la pregunta(1)

Su respuesta a la pregunta