如何在SharePoint中使用选定的用户配置文件服务

本文关键字:用户 配置文件 服务 SharePoint | 更新日期: 2023-09-27 18:21:25

基本上,我正在做一个计时器作业,发送从SharePoint用户配置文件服务获取的birthdayWish电子邮件。但问题是我在服务器上有多个用户配置文件服务。

如1)。用户配置文件服务1
2) 。用户配置文件服务2
3) 。用户配置文件服务3
4) 。用户档案服务4

那么如何使用第二用户配置文件服务。

这是我做的一些代码:

    SPServiceContext oServiceContext = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default);
     UserProfileManager oProfileManager = new UserProfileManager(oServiceContext);

因此,在SPServiceApplicationProxyGroup.Default中,它正在获取第一个用户配置文件。

其中我想使用第二用户配置文件服务。但在默认情况下,当尝试访问其geting第一个用户配置文件服务并对其进行迭代时。

那么如何将其设置为使用第二用户配置文件服务。

如何在SharePoint中使用选定的用户配置文件服务

我的猜测是,您有一个用户配置文件服务实例(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);