设为首页 收藏本站
查看: 1040|回复: 0

[经验分享] Sharepoint学习笔记—error处理-- The user does not exist or is not unique.

[复制链接]

尚未签到

发表于 2015-9-28 11:39:44 | 显示全部楼层 |阅读模式
  看到网上不少人遇到过这种类似的错误,而产生这种错误的原因也有多种,我产生此错误的背景是在试图通过ECMAscript对象模型把一个User添加到某个指定的Group中时遇到的。
       DSC0000.jpg    
  问题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的右边你可以看到此选项,请手工将其停止,然后重启服务器。
DSC0001.jpg
  需要指明的是,此处我只列出了上述两种解决思路,如果上面的情况均未解决你遇到的问题,你就需要针对你自己的特定情况,捕获可能的相关错误信息来解决问题。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119942-1-1.html 上篇帖子: SharePoint 2013常用开发工具分享 下篇帖子: 使用C#利用Http协议从远端向SharePoint文档库上传文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表