Как использовать выбранную службу профиля пользователя в SharePoint
По сути, я выполняю задание таймера для отправки электронного сообщения на день рождения, полученного из службы пользовательских профилей SharePoint. Но проблема в том, что у меня есть несколько сервисов userprofile на сервере.
как 1). userprofile service1
2). userprofile service2
3). userprofile service3
4). userprofile service4
Итак, как использовать сервис 2-го профиля пользователя.
Вот код, который я сделал:
SPServiceContext oServiceContext = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default);
UserProfileManager oProfileManager = new UserProfileManager(oServiceContext);
Итак, здесь, в SPServiceApplicationProxyGroup.Default, он получает 1-й профиль пользователя.
Среди них я хочу использовать сервис 2-го профиля пользователя. но по умолчанию при попытке получить доступ к 1-й службе профиля пользователя и выполнить итерацию по ней.
Итак, как настроить его на использование 2-го сервиса профиля пользователя.
1 ответ
Я предполагаю, что у вас есть один экземпляр службы профилей пользователей (UPS) с несколькими приложениями-службами профилей пользователей (UPA) (а не с несколькими UPS):
var userAppName = "userprofile service2";
SPFarm farm = SPFarm.Local;
SPServiceApplication application;
foreach (SPService s in farm.Services)
{
if(s.TypeName.Contains("User Profile Service"))
{
//We found UPS
foreach(SPServiceApplication app in s.Applications)
{
if(app.Name == userAppName)
application = app; //Here is UPA
}
}
}
//Or if you like oneliner (not 100% safe)
var x = farm.Services.First(s => s.TypeName.Contains("User Profile Service"))
.Applications.FirstOrDefault(app => app.Name == userAppName);