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

时间:2012-01-24 05:23:33

标签: c# asp.net sharepoint sharepoint-2010 sharepoint-userprofile

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

喜欢1)。 userprofile service1
2)。 userprofile service2
3)。 userprofile service3
4)。 userprofile service4

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

这是我做过的一些代码:

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

     UserProfileManager oProfileManager = new UserProfileManager(oServiceContext);

所以在 SPServiceApplicationProxyGroup.Default 中获取第一个用户配置文件。

其中我想使用第二个用户个人资料服务。但在默认情况下尝试访问其获取第一个用户配置文件服务并进行迭代时。

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

1 个答案:

答案 0 :(得分: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);