Sharepoint学习笔记—error处理-- The user does not exist or is not unique.
看到网上不少人遇到过这种类似的错误,而产生这种错误的原因也有多种,我产生此错误的背景是在试图通过ECMAscript对象模型把一个User添加到某个指定的Group中时遇到的。
问题1.当我试图把一个User添加到Sharepoint的某个指定的Group,而这个User已经在Site Collection中存在,在此背景下我得到此错误信息。
问题2.如果我试图把一个在Site Collection中不存在,而在AD中存在的User添加到Sharepoint的某个指定Group中时,这种操作是肯定不能成功的。因为微软的MSDN中明确指出了只能添加已经在Site Collection中存在的AD Users。
我的解决步骤如下:
一、检查关于用户设置信息的代码是否有问题。
我原来的代码如下:
function addUserToSharePointGroup(groupID) {
//var clientContext = new SP.ClientContext(siteUrl);
var clientContext = new SP.ClientContext.get_current();
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(groupID);
var userCreationInfo = new SP.UserCreationInformation();
userCreationInfo.set_email('help@star.com.cn');
userCreationInfo.set_loginName('help');
userCreationInfo.set_title('help');
this.oUser = oGroup.get_users().add(userCreationInfo); //add user into group
var userInfo = '\nUser: ' + oUser.get_title() +
'\nEmail: ' + oUser.get_email() +
'\nLogin Name: ' + oUser.get_loginName();
alert(userInfo);
clientContext.load(oUser);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededaddUserToSharePointGroup),
Function.createDelegate(this, this.onQueryFailedaddUserToSharePointGroup));
}
function onQuerySucceededaddUserToSharePointGroup() {
alert(this.oUser.get_title() + " added.");
}
function onQueryFailedaddUserToSharePointGroup(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
此代码存在问题主要在userCreateInfo代码:
1、set_loginName设置项应该加入此用户所在的域 DOMAIN
2、DOMAIN后面应该用"\\",否则在实际生成的User时就会把DOMAIN与User直接连接起来(如:DOMAINuser),这样的用户当然在AD中是不存在的
因此,在代码设置中,针对User的Information应该符合真正存在的那个User在AD Account中的设置情况,所以在上述代码中你可以看到我加入了一个alert来显示设置的信息,便于你在查错时与AD中此user的对应信息进行比较。
针对上面的问题修改后的代码如下:
function addUserToSharePointGroup(groupID) {
//var clientContext = new SP.ClientContext(siteUrl);
var clientContext = new SP.ClientContext.get_current();
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(groupID);
var userCreationInfo = new SP.UserCreationInformation();
userCreationInfo.set_email('help@star.com.cn');
userCreationInfo.set_loginName('STAR\\help');
userCreationInfo.set_title('help');
this.oUser = oGroup.get_users().add(userCreationInfo); //add user into group
var userInfo = '\nUser: ' + oUser.get_title() +
'\nEmail: ' + oUser.get_email() +
'\nLogin Name: ' + oUser.get_loginName();
alert(userInfo);
clientContext.load(oUser);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededaddUserToSharePointGroup),
Function.createDelegate(this, this.onQueryFailedaddUserToSharePointGroup));
}
function onQuerySucceededaddUserToSharePointGroup() {
alert(this.oUser.get_title() + " added.");
}
function onQueryFailedaddUserToSharePointGroup(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
二、检查Windows Server的 Domain member: Digitally encrypt or sign secure channel data (always) 安全设置项。
如果上面的排错没有解决The user does not exist or is not unique报错,那么就进入这一步进行偿试。
由于我的开发环境是Server 2008 R2,认证方式采用的是Kerberos(据说这点很重要,因为如果采用的是windows NTLM方式,则不会存在Application与AD环境的信息沟通问题),据说Windows Server 2008 (或 R2)中有某个Feature不支持Sharepoint上运行的Application,由此可能会造成AD信息交换出问题。
解决的办法就是设置Domain member: Digitally encrypt or sign secure channel data (always) 这个安全项。这个选项默认是开启的,我们需要手工停止它。方法是在服务器上 Start -> Run -> type gpedit.msc.
进行设置界面后,依序打开
Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options.在Security Options的右边你可以看到此选项,请手工将其停止,然后重启服务器。
需要指明的是,此处我只列出了上述两种解决思路,如果上面的情况均未解决你遇到的问题,你就需要针对你自己的特定情况,捕获可能的相关错误信息来解决问题。
Sharepoint学习笔记—error处理-- The user does not exist or is not unique.相关推荐
- Sharepoint学习笔记—ECMAScript对象模型系列-- 7、获取和修改List的Lookup字段
在前面我们提到了如何使用ECMAscript对象模型来操作普通的List Items,但如果我们操作的List包含有Lookup字段,那么我们又该怎么做呢? 首先参考此文搭建我们本文的测试环境 Sha ...
- Sharepoint学习笔记---Linq to Sharepoint--查询语法
Linq to sharepoint的引入的确给我们操作Sharepoint带来了便利,首先就体现在对Sharepoint 的查询优势上.它基本可以照搬Linq to SQL的查询语法,这就大大保护了 ...
- Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(2、在Webpart中访问Full Trust Proxy)...
上一篇Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(1.创建一个能访问DataBase的Full Trust Proxy), ...
- Sharepoint学习笔记—Site Definition系列-- 2、创建Content Type
Sharepoint本身就是一个丰富的大容器,里面存储的所有信息我们可以称其为"内容(Content)",为了便于管理这些Conent,按照人类的正常逻辑就必然想到的是对此进行&q ...
- Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...
在Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据一)中,解释了如何把Crystal Report整合到Sharepoint ...
- Sharepoint学习笔记—架构系列
为便于查阅,这里整理并列出了我的Sharepoint学习笔记中涉及架构方面的有关文章,有些内容可能会在以后更新. Sharepoin学习笔记-架构系列-- Sharepoint的网页(Page), ...
- Sharepoint学习笔记—Ribbon系列
为便于查阅,这里整理并列出了我的Sharepoint学习笔记中涉及Ribbon开发的关文章,有些内容可能会在以后更新. Sharepoint学习笔记-Ribbon系列-- 1. Ribbon的架构 ...
- Sharepoint学习笔记—Ribbon系列-- 2. 在Ribbon中添加新Tab
有了上面的基础,我们来看看如何向Sharepoint网站的Ribbon中添加我们定义的Tab. 直接进入操作步骤 一.创建 SharePoint 项目 要添加新选项卡,应首先创建一个空白 ShareP ...
- Sharepoint学习笔记--Farm Backup Error:Administration 2010 Service is not started
做了一段时间的Sharepoint项目,今天在做Farm 备份时,出现如下错误: 这是由于没有启动 "Share point 2010 Administration"服务,导致备份 ...
最新文章
- 浅析商城网站建设需要注意哪些细节内容呢?
- contos LINUX搭建LAMP笔记
- android view flipper,安卓控件——ViewFlipper
- ABAP 如何实现屏幕字段不可输入
- javaWeb开发总结 ---- 前端数据插入到后台
- android for vs (三)visual studio android 发布为 apk
- opengles系列-绘制三角形
- linux卸载rpm包的命令,Linux RPM包安装、卸载和升级(rpm命令)
- 机械制造技术基础【3】
- WIFI测试APP(华为、华三、锐捷)
- 华为android9使用外置存储卡,华为mate9如何删除内存卡文件?华为手机清理内存教程...
- ARM base instruction -- orr
- 【IoT】产品设计:OEM、ODM、EMS 的区别是什么?
- python绘制四叶草_python绘图四叶草
- 【老九学堂】【初识C语言】C语言基本数据类型
- python有什么颜色_Python中常见颜色记录
- Android基于Facebook Rebound的动画效果框架Backboard demo (非常炫酷)
- 离职后竟半夜偷溜回办公室写代码?为自由软件而战斗的程序员
- 带emoji表情的react输入框组件
- 苹果6s能安装通讯测试软件么,iOS 13在iPhone 6S和SE上运行情况如何
热门文章
- 【Immutable】拷贝与JSON.parse(JSON.stringify()),深度比较相等与underscore.isEqual(),性能比较...
- 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?...
- 在WIN7下硬盘安装XP双系统
- 先容Oracle中null的运用要领。
- 1048. Longest String Chain
- 【知识导图】数据结构与算法
- [Java学习资料] [成长之路]
- 共轭方式怎么判断_怎样判断共轭双烯
- python词频统计结果写入csv_Python词频对比并导入CSV文件
- datetime mysql 当天_MySQL 获得当前日期时间(以及时间的转换)