Web サービスにクエリを実行してユーザーを検索すると、そのユーザーがサイトの SharePoint グループに属していない場合、ID は -1 になります。
ただし、ユーザーはグループ権限を介してサイトにアクセスできます。そのため、私の Web サービス呼び出しでは、SharePoint 自体がユーザーを追加できるにもかかわらず、ユーザーをリスト内の「人」ボックスに追加できません。
私の Web サービス呼び出しは次のとおりです。
String searchText = "[My User's Login Name, Spelled Exactly as it appears in SharePoint.]";
String maxresults = "100";
String pType = "All";
String body = "<?xml version=\"1.0\"?>"
+ "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
+ " xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ "<soap:Body>"
+ " <SearchPrincipals "
+ " xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">"
+ " <searchText>" + searchText + "</searchText>"
+ " <maxResults>" + maxResults + "</maxResults>"
+ " <principalType>" + pType + "</principalType>"
+ " </SearchPrincipals>"
+ " </soap:Body>"
+ "</soap:Envelope>";
Web サービス呼び出しから次の応答を受け取ります。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SearchPrincipalsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<SearchPrincipalsResult>
<PrincipalInfo>
<AccountName>[User's Account Name]</AccountName>
<UserInfoID>-1</UserInfoID> <------------ NOTE THE -1 HERE -----------------
<DisplayName>[User's full name, exactly as I sent it in]</DisplayName>
<Email>...</Email>
<Department>...</Department>
<Title>...</Title>
<IsResolved>true</IsResolved>
<PrincipalType>User</PrincipalType>
</PrincipalInfo>
</SearchPrincipalsResult>
</SearchPrincipalsResponse>
</soap:Body>
</soap:Envelope>
この情報を使用して、Web サービスを介してユーザーを「people」ボックスに追加すると、エントリは「-1;#My User Name」になり、もちろん見つからないため、List.asmx Web サービスはエラーを返します。の0x81020054 : The user does not exist or is not unique.
ユーザーをサイト内のグループに直接追加すると、ID は問題なく解決され、すべてが正常に処理されます。それらをグループから削除すると、再び-1に戻ります。
常に有効な ID を返すための考えや提案はありますか?