我想通过登录名在SPUser中检索C#对象。
在我的程序中,我从DataTable获得了一个SPListItemCollection,并试图在foreach循环中获得一个SPUser对象。
下面是代码片段,它展示了我如何尝试获取SPUser
SPUser usera = new SPFieldUserValue(web, Convert.ToString(dr["OnlyUser"])).User;但我收到一条错误信息:
值不属于预期范围。
发生此错误是因为SPFieldUserValue需要特定的格式([int];#[domain]\[username])。我失败了,因为它只从DataTable返回登录名。
因此,是否有人知道如何在不使用loginName的情况下通过SPWeb.EnsureUser()获得spuser obj,因为如果还没有添加,这将将用户添加到站点。
发布于 2017-01-27 14:56:41
用户信息存储在站点集合根站点的列表中。当您调用SPWeb.EnsureUser时,它会检查该列表,并在用户尚未存在的情况下将其添加到该列表中。
您可以直接访问此列表,以检查某人是否已经有条目。可以通过SiteUserInfoList对象的SPWeb属性访问列表。
注意,用户信息列表中用户条目的ID是在用户的字符串表示形式中出现在;#前面的数字。
所有这些都说明,您确实需要避免使用SPWeb.EnsureUser吗?如果用户在列表中没有条目,它会将用户添加到信息列表中,但如果您担心的话,它不会自动授予用户访问站点的权限。
https://stackoverflow.com/questions/41887482
复制相似问题