【问题标题】:Search with SharePoint CSOM (portable) throws an exception使用 SharePoint CSOM(便携式)搜索会引发异常
【发布时间】:2015-06-09 21:10:50
【问题描述】:

我正在尝试使用 SharePoint 客户端框架执行搜索,使用 Windows 应用程序中的可移植 dll。

使用 Fiddler 我可以看到我的搜索已执行,并返回元数据和搜索结果的 JSON 集合。这与非便携式 CSOM 的结果相同。

当 CSOM 尝试将结果映射到它的数据对象时,我得到以下异常:

无法将“System.Collections.Generic.Dictionary`2[System.String,System.Object]”类型的对象转换为“Microsoft.SharePoint.Client.Search.Query.ResultTableCollection”类型。

此异常发生在 CSOM(便携式)内部。非便携式 CSOM 无异常运行,返回预期结果。

我正在运行以获取此异常的代码是:

var query = new KeywordQuery(ctx);
query.QueryText = "something";
var executor = new SearchExecutor(ctx);
var results = executor.ExecuteQuery(query);
await ctx.ExecuteQueryAsync();

在上面,ctx是一个已经过认证的ClientContext。其他请求(例如获取特定列表)按预期工作。

我从 c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI 引用以下 dll:

  • Microsoft.SharePoint.Client.Portable.dll
  • Microsoft.SharePoint.Client.Runtime.Portable.dll
  • Microsoft.SharePoint.Client.Runtime.WindowsStore.dll
  • Microsoft.SharePoint.Client.Search.Portable.dll

我的问题是。

如何解决这个问题,以便我可以使用 CSOM 从 Windows 应用商店应用程序运行搜索查询?

更新: 我在验证 ClientContext 后添加了以下内容:

ctx.ExecutingWebRequest += (s, e) =>
    e.WebRequest.Headers["Accept-Encoding"] = "gzip, deflate";

这解决了当前的问题,但引入了一个新问题。我现在得到一个 System.FormatException:

格式不正确的 JSON 流。

由于来自可移植和不可移植 CSOM 的 JSON 是相同的,因此一个 CSOM 中不应出现解析错误,而另一个不应出现解析错误。

【问题讨论】:

    标签: c# windows-store-apps sharepoint-2013 csom sharepoint-search


    【解决方案1】:

    我可以从您的异常中确定的是,执行查询结果的转换在这里会产生问题。

    使用下面的代码来转换执行查询结果

    ResultTable rtSharePointSearchResult = new ResultTable();
    KeywordQuery query = new KeywordQuery(clientContext);
    query.QueryText = "Keywords";
    query.TrimDuplicates = false;
    SearchExecutor searchExecutor = new SearchExecutor(clientContext);
    ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(query);
    clientContext.ExecuteQuery();
    rtSharePointSearchResult = results.Value[0];
    

    【讨论】:

      【解决方案2】:

      请注意,第一篇文章使用 ctx.ExecuteQueryAsync,但“答案”使用 ctx.ExecuteQuery。

      该错误存在于可移植类库中(第一篇文章使用),但这适用于非便携式版本(第二篇文章)。

      干杯, 保罗

      【讨论】:

        猜你喜欢
        • 2020-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多