Dynamics 365 SearchByTitleKbArticleRequest不返回任何记录

时间:2017-12-14 04:08:11

标签: dynamics-crm dynamics-365 knowledge-management

我正在尝试从Dynamics 365在线实例中检索kbarticle。我使用SDK示例提供的非常简单的查询,但它永远不会返回任何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。我尝试过使用知识文章但没有运气。
  2. 与CRM Online实例的连接也是正确的,我可以使用RetrieveMultiple服务运行其他查询。
  3. 该文章已发布,我还有权访问该文章。
  4. 我能够使用REST并使用RetrieveMultiple检索同一篇文章,所以我在文章或我的连接中没有看到任何问题。
  5. 有人能指出正确的方向让这条消息有效吗?

1 个答案:

答案 0 :(得分:0)

这取决于您使用的实体,下面我给出了KnowledgeArticle的示例。

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

您可以使用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上索引数据似乎需要一些时间,这可能不会使用FullTextSearchKnowledgeArticleRequest返回新创建的文章。