首页 > 代码库 > 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 搜索出来的数据错误,冗余