首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用SPWeb.EnsureUser()的情况下通过loginname获得spuser

如何在不使用SPWeb.EnsureUser()的情况下通过loginname获得spuser
EN

Stack Overflow用户
提问于 2017-01-27 05:29:45
回答 1查看 1.9K关注 0票数 0

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

在我的程序中,我从DataTable获得了一个SPListItemCollection,并试图在foreach循环中获得一个SPUser对象。

下面是代码片段,它展示了我如何尝试获取SPUser

代码语言:javascript
复制
SPUser usera = new SPFieldUserValue(web, Convert.ToString(dr["OnlyUser"])).User;

但我收到一条错误信息:

值不属于预期范围。

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

因此,是否有人知道如何在不使用loginName的情况下通过SPWeb.EnsureUser()获得spuser obj,因为如果还没有添加,这将将用户添加到站点。

EN

回答 1

Stack Overflow用户

发布于 2017-01-27 14:56:41

用户信息存储在站点集合根站点的列表中。当您调用SPWeb.EnsureUser时,它会检查该列表,并在用户尚未存在的情况下将其添加到该列表中。

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41887482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档