Question

J'ai un asp.net Web Application (Site Web non) que je suis en train de soutenir des profils pour les utilisateurs anonymes. J'ai une forme et je veux que les utilisateurs anonymes puissent entrer leur nom et e-mail qu'une seule fois, et que ces renseignements accessibles automatiquement sur la prochaine charge pour eux.

Dans mon web.config j'ai installé ID anonyme comme ceci:

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

J'ai ma configuration de section de profil comme celui-ci:

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

Enfin, en raison de mon application étant une application Web et non un site Web, je suis en utilisant les profils via cet objet personnalisé:

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

Ce code est basé sur de cette de référence.

Le problème est que ce code ne prend pas en charge les utilisateurs anonymes, ou si elle ne je ne sais pas comment. Je ne peux pas utiliser la méthode GetUserProfile() sans paramètre parce que si l'utilisateur est anonyme, Membership.GetUser() est nulle. Je pourrais passer l'ID anonyme jeton dans la première méthode de GetUserProfile(string username) mais je ne peux pas » trouver un moyen d'obtenir l'ID anonyme jeton pour l'utilisateur actuel.

Quelqu'un sait comment obtenir ces informations? Google ne semble pas retourner des résultats utiles.

Merci,

Était-ce utile?

La solution

Succès!

Je changé:

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

à

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

et maintenant il fonctionne!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top