Dynamics 365 SearchByTitleKbArticleRequest returns 没有记录

Dynamics 365 SearchByTitleKbArticleRequest returns no records

我正在尝试从 Dynamics 365 在线实例中检索 kbarticle。我使用 SDK 示例提供的一个非常简单的查询,但它从来没有 returns 任何 kbarticle。

代码如下:

 SearchByTitleKbArticleRequest searchByTitleRequest =
                    new SearchByTitleKbArticleRequest()
                    {
                        SubjectId = subjectId, // I have retrieved subjectid earlier. 
                        UseInflection = false,
                        SearchText = "My Article",
                        QueryExpression = new QueryExpression()
                        {
                            ColumnSet = new ColumnSet(true),
                            EntityName = "kbarticle" // I've tried knowledgearticle as well.
                        }
                    };

var searchByTitleResponse = (SearchByTitleKbArticleResponse)
                    serviceProxy.Execute(searchByTitleRequest);

        // check success
        var retrievedArticles = searchByTitleResponse.EntityCollection.Entities;                      
        Console . WriteLine ( "  Results of search (titles found):" + retrievedArticles.Count ); // It is always 0
        foreach ( var article in retrievedArticles )
            Console . WriteLine ( article .Id );
  1. 新版SDK中,kbarticle更名为knowledgearticle。我试过使用 knowledgearticle 但没有成功。
  2. 与 CRM Online 实例的连接也是正确的,我能够 运行 使用 RetrieveMultiple 服务进行其他查询。
  3. 文章已发布,我也有访问文章的权限。
  4. 我能够使用 REST 和 RetrieveMultiple 检索同一篇文章,因此我在文章或我的连接中没有发现任何问题。

任何人都可以指出正确的方向来使这条消息生效吗?

这个要看你用的是什么实体,下面我以知识文章为例。

根据Search knowledge articles using full-text search,知识文章是全文索引的,支持SQL服务器全文搜索。

您可以使用 FullTextSearchKnowledgeArticleRequest 搜索文章。

var queryExpression = new QueryExpression("knowledgearticle")
{
    ColumnSet = new ColumnSet(true),
    PageInfo = new PagingInfo()
    {
        PageNumber = 1,
        Count = 5,
    }
};

FullTextSearchKnowledgeArticleRequest searchByTitleRequest =
        new FullTextSearchKnowledgeArticleRequest()
        {
            UseInflection = true,
            SearchText = "Error",
            RemoveDuplicates = false,
            StateCode = 0,
            QueryExpression = queryExpression
        };


var fullTextSearchKnowledgeArticleResponse = (FullTextSearchKnowledgeArticleResponse)
                   orgService.Execute(searchByTitleRequest);

// check success
var retrievedArticles = fullTextSearchKnowledgeArticleResponse.EntityCollection.Entities;
Console.WriteLine("Results of search (titles found):" + retrievedArticles.Count);
foreach (var article in retrievedArticles)
    Console.WriteLine(article.Id);

请注意,在 SQL 上索引数据似乎需要一些时间,这可能不是 return 使用 FullTextSearchKnowledgeArticleRequest 新创建的文章。