Поставщик профиля вызова по имени в профиле конфигурации

У меня есть устаревшая система (sitecore 6.1), в которой уже есть один провайдер профилей в качестве профиля по умолчанию для раздела администратора.

Теперь мне нужно внедрить другого настроенного поставщика профиля SQL (в другой таблице) для обычного пользователя.

Но мой вопрос: как система дозирования знает, какого поставщика профиля использовать в коде?

Могу ли я сделать что-то подобное:

System.Web.Security.Membership.Providers[providerString];

Так что я могу позвонить в мой код соответствующим образом в своем коде.

Или что было бы лучшей практикой в ​​этом случае.

Я потратил впустую 1 час, пытаясь пройти через документацию sitecore, но там не так много доступного.

1 ответ

Вот код, который я недавно сделал, чтобы настроить некоторые пользовательские профили для клиента с помощью диспетчера кампании электронной почты. Этот код использует некоторые классы, специфичные для ECM, создает нового пользователя, инициализирует класс профиля и затем назначает этот профиль новому пользователю. Затем он устанавливает некоторые пользовательские свойства для только что созданного пользователя. Он показывает, как вызвать профиль на основе пользователя, а также назначить профиль для использования для этого пользователя. Это может помочь или, возможно, помочь кому-то еще.

   public static void Process(List<Subscriber> userItems, Item targetAudienceDefinitionItem)
    {
        foreach (Subscriber user in userItems)
        {
            // you can also just pass it the id of the target audience as a string
            Sitecore.Modules.EmailCampaign.TargetAudienceBase target = Sitecore.Modules.EmailCampaign.TargetAudience.FromItem(targetAudienceDefinitionItem);

            string campaignname = target.ManagerRoot.Settings.CommonDomain;
            string realUsername = campaignname + "\\" + user.UserName;

            using (new SecurityDisabler())
            {
                User newUser;
                if (!Sitecore.Security.Accounts.User.Exists(realUsername))
                {
                    // create a new user and assign it to the email domain specified in the manager root item
                    newUser = Sitecore.Security.Accounts.User.Create(campaignname + "\\" + user.UserName, System.Web.Security.Membership.GeneratePassword(8,1));
                }
                else
                    // get back the existing user
                    newUser = User.FromName(realUsername, false);

                // get back the current user profile  
                UserProfile subscriber = newUser.Profile;

                // reset the profile to be the profile specified in the manager root
                subscriber.ProfileItemId = target.ManagerRoot.Settings.SubscriberProfile;
                subscriber.Save();

                // built in properties are set like this
                subscriber.Email = user.Email;

                // set custom property value 
                subscriber["Address"] = user.Address;


                // or long method 
                subscriber.SetCustomProperty("Address", user.Address);

                subscriber.Save();
                // now subscribe the user to the target audience subscriber list
                target.Subscribe(Contact.FromName(newUser.Name));

            }
        }
    }
Другие вопросы по тегам