如何使用SP Web服务通过“友好名称”获取SharePoint用户配置文件?

时间:2011-02-09 02:01:46

标签: web-services sharepoint sharepoint-2010 spweb

我正在从客户端程序中的SharePoint列表中检索名称列表。这些名称是从SharePoint中的名称选择器填充的。在从列表查询返回的XML中,列表如下所示:

"#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName"

我的程序需要获取每个用户的帐户名称(或电子邮件地址)。我可以使用GetUserProfileByName("domain\\username"),但我没有帐户名称。我不能做GetUserProfileByName("Some Name")之类的事情,因为它必须是帐户名。

每个名称前面的数字是索引或ID,但我不能使用GetUserProfileByIndex(10),因为我必须管理自己的数据或拥有管理员凭据。

所以基本上它提供了两个重要的信息,但我无法使用它们检索任何进一步的信息。

2 个答案:

答案 0 :(得分:1)

您确定该号码是一个索引,我认为它可能是该网站集的用户ID。它似乎也是一种奇怪的用户列表,但无论如何:

string result = "#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName";
string[] users = result.Substring(1).Split(new string[2] { ";", "#" }, StringSplitOptions.RemoveEmptyEntries);
for (int j = 0; j < users.Length; j = j + 2) {
    using (ClientContext context = new ClientContext("http://yoursite")) {
        List list = context.Web.SiteUserInfoList;
        ListItem item = list.GetItemById(int.Parse(users[j]));
        context.Load(item, i => i.Id, i => i["Name"]);
        context.ExecuteQuery();
        object username = item["Name"];
    }
}

答案 1 :(得分:0)

我有一个非常混乱的解决方案,但我很想听听一些关于正确/优雅解决方案的想法。

现在我在GetListItems列表中使用UserInfo并创建ows_ImnNameows_Name条目的字典,然后将列表查询中的字符串解析为命名并将它们用作查找值。

是更好的方法。