1

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 を返すための考えや提案はありますか?

4

1 に答える 1

1

SearchPrincipals メソッドを使用していることがわかります。代わりに ResolvePrincipals メソッドを使用してみてください。

ドキュメントはこちら: http://msdn.microsoft.com/en-us/library/people.people.resolveprincipals(v=office.12).aspx

そのメソッドには、ユーザーがサイトに属していない場合に追加する必要があることを指定できる bool パラメーターがあります。サイト。

PeopleWebService.People pe = new PeopleWebService.People(); //People.asmx web service 
string[] users = new string[] { "youruser" };
PeopleWebService.PrincipalInfo[] pInfo = pe.ResolvePrincipals(users, PeopleWebService.SPPrincipalType.User, true); //third param is true
string userID = pInfo[0].UserInfoID.ToString();
于 2012-11-01T12:06:28.520 に答える