我正在编写一个托管SharePoint 2013应用程序的提供程序。我在线使用SharePoint。
由于在这种情况下不支持人员选择器,我需要构建自己的选择器。我找到了SearchPrincipals方法。这似乎正是我正在寻找的,但无论我尝试什么,该方法返回0结果。
我在此方法中发现的少量信息表明问题通常是权限问题,但我以网站集管理员身份登录的用户ClientContext.Web.CurrentUser.IsSiteAdmin
为true
),所以我不应该这样。
我尝试过传递PrincipalType
和PrincipalSource
的几乎所有组合,即使是那些没有意义的组合。我也尝试传入ClientContext.Web.SiteUsers
作为范围,还null
,我在搜索中看到过这两种情况,并且没有发现任何结果。
任何帮助将不胜感激!
答案 0 :(得分:0)
我明白了。 CSOM(客户端对象模型)的ClientContext
允许开发人员进行多个 - 不相关的查询。它会对这些查询进行排队,并在调用ExecuteQuery
之前不执行它们。即使SearchPrincipals
是Utility
类之外的静态方法,它仍然会将方法调用转换为查询并将其排队。该方法将始终返回空集合,但是当您在ExecuteQuery
上调用ClientContext
后,该集合将填充搜索结果。
另外,我之后遇到的另一个问题是,当我调用ExecuteQuery
时,我收到的错误似乎与我的查询完全无关。事实证明,之前执行的代码排队了一些查询,但它从未执行过,所以当我调用ExecuteQuery
时,它也执行了这些查询,其中一个是错误的。如果您遇到意外错误,最好还是查看是否还有其他尚未执行的排队查询。您可以检查布尔属性HasPendingRequest
以帮助确定这一点。
希望这个答案可以为其他人节省很多时间!