0

基本上我正在做一个计时器工作来发送从SharePoint userprofile service获取的生日祝福电子邮件。但问题是我在服务器上有多个用户配置文件服务。

像1)。用户配置文件服务
1 2)。用户配置文件服务
2 3)。用户配置文件服务
3 4)。用户配置文件服务4

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

这是我所做的一些代码:

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

     UserProfileManager oProfileManager = new UserProfileManager(oServiceContext);

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

其中我想使用2nd user-profile service。但默认情况下,当尝试访问其获取第一个用户配置文件服务并迭代它时。

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

4

1 回答 1

0

我的猜测是您有一个用户配置文件服务实例 (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);
于 2012-06-13T22:40:43.493 回答