Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SharePoint中使用选定的用户配置文件服务_C#_Asp.net_Sharepoint_Sharepoint 2010_Sharepoint Userprofile - Fatal编程技术网

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

C# 如何在SharePoint中使用选定的用户配置文件服务,c#,asp.net,sharepoint,sharepoint-2010,sharepoint-userprofile,C#,Asp.net,Sharepoint,Sharepoint 2010,Sharepoint Userprofile,基本上,我是在做一个计时器工作,发送一封从SharePoint用户档案服务获取的生日愿望电子邮件。 但问题是服务器上有多个用户配置文件服务 比如1)。用户配置文件服务1 2). 用户配置文件服务2 3). 用户配置文件服务3 4). 用户配置文件服务4 因此,如何使用第二用户配置文件服务 以下是我所做的一些代码: SPServiceContext oServiceContext = SPServiceContext.GetContext(SPServiceApplicationProxy

基本上,我是在做一个计时器工作,发送一封从SharePoint用户档案服务获取的生日愿望电子邮件。 但问题是服务器上有多个用户配置文件服务

比如1)。用户配置文件服务1
2). 用户配置文件服务2
3). 用户配置文件服务3
4). 用户配置文件服务4

因此,如何使用第二用户配置文件服务

以下是我所做的一些代码:

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

     UserProfileManager oProfileManager = new UserProfileManager(oServiceContext);
因此,在这里的SPServiceApplicationProxyGroup.Default中,它将获得第一个用户配置文件

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


因此,如何将其设置为使用第二个用户配置文件服务。

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