看到网上不少人遇到过这种类似的错误,而产生这种错误的原因也有多种,我产生此错误的背景是在试图通过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.相关推荐

  1. Sharepoint学习笔记—ECMAScript对象模型系列-- 7、获取和修改List的Lookup字段

    在前面我们提到了如何使用ECMAscript对象模型来操作普通的List Items,但如果我们操作的List包含有Lookup字段,那么我们又该怎么做呢? 首先参考此文搭建我们本文的测试环境 Sha ...

  2. Sharepoint学习笔记---Linq to Sharepoint--查询语法

    Linq to sharepoint的引入的确给我们操作Sharepoint带来了便利,首先就体现在对Sharepoint 的查询优势上.它基本可以照搬Linq to SQL的查询语法,这就大大保护了 ...

  3. Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(2、在Webpart中访问Full Trust Proxy)...

    上一篇Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(1.创建一个能访问DataBase的Full Trust Proxy), ...

  4. Sharepoint学习笔记—Site Definition系列-- 2、创建Content Type

    Sharepoint本身就是一个丰富的大容器,里面存储的所有信息我们可以称其为"内容(Content)",为了便于管理这些Conent,按照人类的正常逻辑就必然想到的是对此进行&q ...

  5. Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...

    在Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据一)中,解释了如何把Crystal Report整合到Sharepoint ...

  6. Sharepoint学习笔记—架构系列

     为便于查阅,这里整理并列出了我的Sharepoint学习笔记中涉及架构方面的有关文章,有些内容可能会在以后更新. Sharepoin学习笔记-架构系列--  Sharepoint的网页(Page), ...

  7. Sharepoint学习笔记—Ribbon系列

     为便于查阅,这里整理并列出了我的Sharepoint学习笔记中涉及Ribbon开发的关文章,有些内容可能会在以后更新. Sharepoint学习笔记-Ribbon系列-- 1. Ribbon的架构 ...

  8. Sharepoint学习笔记—Ribbon系列-- 2. 在Ribbon中添加新Tab

    有了上面的基础,我们来看看如何向Sharepoint网站的Ribbon中添加我们定义的Tab. 直接进入操作步骤 一.创建 SharePoint 项目 要添加新选项卡,应首先创建一个空白 ShareP ...

  9. Sharepoint学习笔记--Farm Backup Error:Administration 2010 Service is not started

    做了一段时间的Sharepoint项目,今天在做Farm 备份时,出现如下错误: 这是由于没有启动 "Share point 2010 Administration"服务,导致备份 ...

最新文章

  1. 浅析商城网站建设需要注意哪些细节内容呢?
  2. contos LINUX搭建LAMP笔记
  3. android view flipper,安卓控件——ViewFlipper
  4. ABAP 如何实现屏幕字段不可输入
  5. javaWeb开发总结 ---- 前端数据插入到后台
  6. android for vs (三)visual studio android 发布为 apk
  7. opengles系列-绘制三角形
  8. linux卸载rpm包的命令,Linux RPM包安装、卸载和升级(rpm命令)
  9. 机械制造技术基础【3】
  10. WIFI测试APP(华为、华三、锐捷)
  11. 华为android9使用外置存储卡,华为mate9如何删除内存卡文件?华为手机清理内存教程...
  12. ARM base instruction -- orr
  13. 【IoT】产品设计:OEM、ODM、EMS 的区别是什么?
  14. python绘制四叶草_python绘图四叶草
  15. 【老九学堂】【初识C语言】C语言基本数据类型
  16. python有什么颜色_Python中常见颜色记录
  17. Android基于Facebook Rebound的动画效果框架Backboard demo (非常炫酷)
  18. 离职后竟半夜偷溜回办公室写代码?为自由软件而战斗的程序员
  19. 带emoji表情的react输入框组件
  20. 苹果6s能安装通讯测试软件么,iOS 13在iPhone 6S和SE上运行情况如何

热门文章

  1. 【Immutable】拷贝与JSON.parse(JSON.stringify()),深度比较相等与underscore.isEqual(),性能比较...
  2. 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?...
  3. 在WIN7下硬盘安装XP双系统
  4. 先容Oracle中null的运用要领。
  5. 1048. Longest String Chain
  6. 【知识导图】数据结构与算法
  7. [Java学习资料] [成长之路]
  8. 共轭方式怎么判断_怎样判断共轭双烯
  9. python词频统计结果写入csv_Python词频对比并导入CSV文件
  10. datetime mysql 当天_MySQL 获得当前日期时间(以及时间的转换)