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.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总价1500元!小米商城上线北京绿色节能
- 下一篇: 【转】ABP源码分析二十六:核心框架中的