Pregunta

Así que tengo una asp.net aplicación Web (Web site no) que yo estoy tratando de apoyar a los perfiles de usuarios anónimos. Tengo un formulario y quiero que los usuarios anónimos para poder introducir su nombre y correo electrónico de una sola vez, y tener esa información automáticamente accesible en la siguiente carga para ellos.

En mi Web.config He fijado ID anónimo de este modo:

<anonymousIdentification enabled="true" cookieless="AutoDetect" />

Tengo mi sección de perfil de configuración como esta:

<profile defaultProvider="SqlProvider" enabled="true" inherits="QA_Web_Tools.UserProfile">
  <providers>
    <clear />
    <add connectionStringName="QAToolsConnectionString" name="SqlProvider"
         type="System.Web.Profile.SqlProfileProvider" />
  </providers>
</profile>

Por último, debido a que mi aplicación de una aplicación web y no un sitio Web, estoy usando los perfiles a través de este objeto personalizado:

public class UserProfile : ProfileBase
{
    public static UserProfile GetUserProfile(string username)
    {
        return Create(username) as UserProfile;
    }

    public static UserProfile GetUserProfile()
    {
        return Create(Membership.GetUser().UserName) as UserProfile;
    }

    [SettingsAllowAnonymous(true)]
    public string FullName
    {
        get { return base["FullName"] as string; }
        set { base["FullName"] = value; }
    }

    [SettingsAllowAnonymous(true)]
    public string BuildEmail
    {
        get { return base["BuildEmail"] as string; }
        set { base["BuildEvmail"] = value; }
    }
}

Este código se basa apagado de esta referencia .

El problema es que ese código no es compatible con los usuarios anónimos, o si lo hace no sé cómo. No puedo utilizar el método GetUserProfile() sin parámetros porque si el usuario es anónimo, Membership.GetUser() es nulo. Podría pasar en el ID anónimo ficha en el primer método GetUserProfile(string username) pero no puede encontrar ninguna manera de obtener el identificador anónimo token para el usuario actual.

¿Alguien sabe cómo conseguir esta información? Google no parece estar volviendo resultados útiles.

Gracias,

¿Fue útil?

Solución

Éxito!

Me cambió:

public static UserProfile GetUserProfile()
{
    return Create(Membership.GetUser().UserName) as UserProfile;
}

a

    public static UserProfile GetUserProfile()
    {
        return HttpContext.Current.Profile as UserProfile;
    }

y ahora funciona!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top