Лучший способ перенести анонимный профиль
Существует ли альтернативный способ, который переносит все параметры неявно? Или любые другие преимущества.
Из MSDN :
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);
  Profile.ZipCode = anonymousProfile.ZipCode;
  Profile.CityAndState = anonymousProfile.CityAndState;
  Profile.StockSymbols = anonymousProfile.StockSymbols;
  ////////
  // Delete the anonymous profile. If the anonymous ID is not 
  // needed in the rest of the site, remove the anonymous cookie.
  ProfileManager.DeleteProfile(args.AnonymousID);
  AnonymousIdentificationModule.ClearAnonymousIdentifier(); 
  // Delete the user row that was created for the anonymous user.
  Membership.DeleteUser(args.AnonymousID, true);
}
Или это лучший/единственный способ ?
2 ответа:
Это путь, по которому нужно идти. Но я бы предложил обобщение. Вместо того, чтобы жестко кодировать каждое свойство, вы можете выполнить цикл через ProfileBase.Коллекция свойств . Что-то вроде этого:
var anonymousProfile = Profile.GetProfile(args.AnonymousID); foreach(var property in anonymousProfile.PropertyValues) { Profile.SetPropertyValue(property.Name, property.PropertyValue); }Поскольку группы свойств представлены как часть имен свойств (например, " настройки.Тема " представляет свойство темы в группе настроек) приведенный выше код также должен работать с группами свойств.