Как вы получаете ASP.NET Anonymous Anture Aublection для поддержки профиля?
Вопрос
Поэтому у меня есть веб-приложение 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;
}
И теперь это работает!