Вопрос

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

В моем web.config у меня есть анонимное удостоверение личности, как так:

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

У меня есть мой профиль настройки, как это:

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

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

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 не возвращает полезные результаты.

Спасибо,

Это было полезно?

Решение

Успех!

Я изменил:

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

к

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top