Frage

Also ich habe eine asp.net Web-Anwendung (nicht Web-Site), dass ich versuche, Profile für anonyme Benutzer zu unterstützen. Ich habe ein Formular, und ich möchte anonyme Benutzer in der Lage sein, ihren Namen zu geben und nur ein einziges Mal eine E-Mail, und haben diese Informationen automatisch zugänglich auf der nächsten Belastung für sie.

In meinem Web.config habe ich anonymen ID-Setup wie folgt:

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

ich meinen Profil Abschnitt Setup wie diese:

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

Schließlich wegen meiner App eine Web App und nicht eine Web-Site zu sein, ich bin die Profile über dieses benutzerdefinierte Objekt mit:

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

Dieser Code basiert weg von diese Referenz .

Das Problem ist, dass dieser Code nicht anonyme Benutzer nicht unterstützt, oder wenn es das tut, weiß ich nicht, wie. Ich kann nicht die GetUserProfile() Methode ohne Parameter verwenden, da, wenn der Benutzer anonym ist, Membership.GetUser() null ist. Ich konnte in der anonymen ID in die erste GetUserProfile(string username) Methode Token passieren, aber ich kann jede mögliche Weise‘finden die anonyme ID für den aktuellen Benutzer-Token zu erhalten.

Wer weiß, wie diese Informationen zu erhalten? Google scheint nicht zu brauchbaren Ergebnissen zu zurückkehren.

Danke,

War es hilfreich?

Lösung

Erfolg!

I geändert:

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

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

und jetzt funktioniert es!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top