首页 > 代码库 > SharePoint2010 PeoplePicker 搜索出来的数据错误,冗余

SharePoint2010 PeoplePicker 搜索出来的数据错误,冗余

1,查询症结:

经过查资料知道,peoplepicker搜索出来的数据来源于4个地方。

  • Your membership provider (such as Active Directory)
  • The User Information List (UIL) in the site collection you’re on
  • The User Profile Service Application (UPA)
  • browser’s cache

参考资料:

http://www.tcscblog.com/4th-profile-source-in-sharepoint-2013s-people-picker/

2,问题&解决方案:

问题一:如果遇到同一个帐号搜索出来多条数据.

 

这几日遇到了一个奇葩的问题,在人员选择器里搜索用户尽然同一个loginName,搜索出来2条数据。

loginName 为  zhangl21的 有2个人......在我混SP的这几年里真的是没遇到过啊。。

 

解决方案:

首先在管理中心的UserProfile Service 查查是否同步,同步是否成功。鄙人的问题就是查了下同步的配置链接里,zhangl21所在的OU,以及这个人未勾选。


要到AD里去查查出错用户的组织架构,是否在配置链接里勾选上。没有勾选就一定要勾选上。


配置同步链接的方法:
http://pjj1020.blog.163.com/blog/static/3018433020118234241887/


勾选上,之后同步。在配置文件里搜索时,就会搜索出来正确的数据,但是此时在人员选择器里搜索还是出现问题。这时,我们需要代码来修改下错误数据的信息

SPSecurity.RunWithElevatedPrivileges(delegate()            {                using (SPSite site = new SPSite("http://XXX/"))                {                    using (SPWeb web = site.OpenWeb())                    {                        web.AllowUnsafeUpdates = true;                        SPList userList = web.SiteUserInfoList;                        //zhangl21的 ID 为 2465                        SPListItem itemUser = userList.GetItemById(2465);                        itemUser["Title"] = "Zhang, Lingwen";                        itemUser["JobTitle"] = "法律顾问";                        itemUser["Department"] = "法律事务部";                        itemUser["EMail"] = "Lingwen.Zhang@XXX.com";                        itemUser["SipAddress"] = "   Lingwen.Zhang@XXX.com";                        itemUser["WorkPhone"] = " 185XXXXXXXX";                        itemUser["Office"] = "北京";                        itemUser.Update();                        userList.Update();                        web.AllowUnsafeUpdates = false;                                            }                }            });

修改后,在人员选择器里搜索,就会出现zhangl21仅一条数据,不会出现之前的冗余数据。修改时切记,是修改旧数据为新数据。

问题二:搜索出有很多测试帐号,以及来源于 membership provider 里的数据,各种删除,各种清理后还是会搜索出来之前的数据。

解决方案:

A,清理缓存

B,修改IE配置

取消勾选后,可以再试试

 

SharePoint2010 PeoplePicker 搜索出来的数据错误,冗余