0

我想SPUser在 C# 中通过登录名检索对象。

在我的程序中,我从 foreach 循环中获取了一个 DataTableSPListItemCollection并尝试获取一个 SPUser 对象。

这是显示我如何尝试获取 SPUser 的代码片段

SPUser usera = new SPFieldUserValue(web, Convert.ToString(dr["OnlyUser"])).User;

但我收到一条错误消息:

值不在预期范围内

发生错误是因为SPFieldUserValue需要特定格式([int];#[domain]\[username])。我失败了,因为它只从 DataTable 返回登录名。

因此,有谁知道如何在不使用的情况下通过 loginName 获取 spuser obj,SPWeb.EnsureUser()因为如果尚未添加,这会将用户添加到站点。

4

1 回答 1

0

用户信息存储在网站集根网站的列表中。当您调用SPWeb.EnsureUser它时,它会检查该列表并将用户添加到该列表中(如果他们还没有的话)。

您可以直接访问此列表以检查是否有人已经有条目。可以通过对象SiteUserInfoList上的属性访问该列表SPWeb

请注意,用户信息列表中用户条目的 ID 是用户;#字符串表示中出现在 之前的数字。

说了这么多,你确定你需要避免使用SPWeb.EnsureUser吗?如果用户在列表中没有条目,它会将用户添加到信息列表中,但如果您担心的话,它不会自动授予他们访问该站点的权限。

于 2017-01-27T14:56:41.437 回答