Utility.SearchPrincipals不会返回任何结果

时间:2013-06-17 21:06:59

标签: sharepoint-2013

我正在编写一个托管SharePoint 2013应用程序的提供程序。我在线使用SharePoint。

由于在这种情况下不支持人员选择器,我需要构建自己的选择器。我找到了SearchPrincipals方法。这似乎正是我正在寻找的,但无论我尝试什么,该方法返回0结果。

我在此方法中发现的少量信息表明问题通常是权限问题,但我以网站集管理员身份登录的用户ClientContext.Web.CurrentUser.IsSiteAdmintrue ),所以我不应该这样。

我尝试过传递PrincipalTypePrincipalSource的几乎所有组合,即使是那些没有意义的组合。我也尝试传入ClientContext.Web.SiteUsers作为范围,还null,我在搜索中看到过这两种情况,并且没有发现任何结果。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我明白了。 CSOM(客户端对象模型)的ClientContext允许开发人员进行多个 - 不相关的查询。它会对这些查询进行排队,并在调用ExecuteQuery之前不执行它们。即使SearchPrincipalsUtility类之外的静态方法,它仍然会将方法调用转换为查询并将其排队。该方法将始终返回空集合,但是当您在ExecuteQuery上调用ClientContext后,该集合将填充搜索结果。

另外,我之后遇到的另一个问题是,当我调用ExecuteQuery时,我收到的错误似乎与我的查询完全无关。事实证明,之前执行的代码排队了一些查询,但它从未执行过,所以当我调用ExecuteQuery时,它也执行了这些查询,其中一个是错误的。如果您遇到意外错误,最好还是查看是否还有其他尚未执行的排队查询。您可以检查布尔属性HasPendingRequest以帮助确定这一点。

希望这个答案可以为其他人节省很多时间!