Azure SearchAsync无法获得结果

时间:2016-05-16 19:52:20

标签: c# azure asynchronous async-await azure-search

我有Search方法可以工作(它是同步的,并在下面注释掉);但是,搜索异步方法不起作用。它没有返回结果......没有例外;它只是在等待。我还没有找到任何使用Microsoft.Azure.Search版本1.0.0.0的示例,它返回Task> SearchAsync。我只能找到返回不同类型的0.9.0.0(任务> SearchAsync)。另外,我在线程/异步编程方面没有太多经验。有人可以帮我识别并解决问题吗?顺便说一句,ISearchRequest基本上是一个包含搜索术语和其他内容的对象,如order by,skip,top等,而GetSearchParameters方法只是将该对象转换为Microsoft.Azure.Search.Models.SearchParameters对象。谢谢!

    public DocumentSearchResult<T> Search(ISearchRequest request)
    {
        Task.WaitAll(SearchAsync(request));
        var t = SearchAsync(request).Result;
        return t;
        //var searchParameters = _searchHelper.GetSearchParameters(request);
        //SearchIndexClient indexClient = _searchServiceClient.Indexes.GetClient("myIndexName");
        //return indexClient.Documents.Search<T>(request.Terms, searchParameters);
    }

    private async Task<DocumentSearchResult<T>> SearchAsync(ISearchRequest request)
    {
        var searchParameters = _searchHelper.GetSearchParameters(request);
        SearchIndexClient indexClient = _searchServiceClient.Indexes.GetClient("myClientName");
        var documentSearchResult = await indexClient.Documents.SearchAsync<T>(request.Terms, searchParameters);
        //never makes it past above line
        //loop is just here for debug purposes
        foreach(var t in documentSearchResult.Results)
        {
            Debug.Write(t.Score);
        }
        return documentSearchResult;
    }

0 个答案:

没有答案