Как получить маркер анонимной аутентификации asp.net для поддержки профиля? - PullRequest
2 голосов
/ 14 июня 2010

Итак, у меня есть веб-приложение asp.net (не веб-сайт), которое я пытаюсь поддерживать профили для анонимных пользователей.У меня есть форма, и я хочу, чтобы анонимные пользователи могли вводить свое имя и адрес электронной почты только один раз, и чтобы эта информация автоматически была доступна для них при следующей загрузке.

В моем файле Web.config у меня есть настройка анонимного идентификатора, например, так:

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

У меня настроен раздел профиля:мое приложение является веб-приложением, а не веб-сайтом. Я использую профили с помощью этого пользовательского объекта:

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

Этот код основан на этой ссылке .

Проблема в том, что этот код не поддерживает анонимных пользователей, или, если это так, я не знаю как.Я не могу использовать метод GetUserProfile() без параметров, потому что, если пользователь является анонимным, Membership.GetUser() будет нулевым.Я мог бы передать токен анонимного идентификатора в первый метод GetUserProfile(string username), но я не могу найти способ получить токен анонимного идентификатора для текущего пользователя.

Кто-нибудь знает, как получить эту информацию?Google, похоже, не возвращает полезных результатов.

Спасибо,

1 Ответ

2 голосов
/ 14 июня 2010

Успех!

Я изменил:

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

на

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

и теперь это работает!

...