azure-cognitive-search - 将 Azure 搜索 SDK 从 v.5.0.3 升级到 v.9。搜索通话挂起

标签 azure-cognitive-search azure-search-.net-sdk

将 .net Azure 搜索 SDK 升级到版本 9 后,我无法进行搜索。通话一直挂起:

    azureSearchIndexClient.Documents.Search(query, parameters);

我没有收到错误,在 5.0.3 上一切正常,我仍然可以在版本 9 中创建、填充和删除索引。没有任何响应,我没什么可继续的...

最佳答案

这是 SDK 9.0.0 版本中的错误,在此处跟踪:https://github.com/Azure/azure-sdk-for-net/issues/6254此问题已在版本 9.0.1 中得到修复,现在可以在 NuGet 上下载。截至撰写本文时,8.0.0-预览版仍然受到此错误的影响。

原因是缺少对 ConfigureAwait(false) 的调用,这会导致在 ASP.NET 经典应用上下文中调用 SDK 时出现死锁。

该错误仅影响用于发送 POST 请求的代码路径。这就是为什么将 UseHttpGetForQueries 设置为 true 是一种有效的解决方法。但是,在修复可用之前,这只能用作临时解决方案,特别是当您的应用程序发送可能不适合 URL 查询字符串的非常大的查询时。

另请注意,仅当阻塞从异步方法返回的任务时才会发生死锁。 SDK 的同步方法在内部执行此操作。建议在 ASP.NET 中使 Controller 方法以及它们调用的可能执行 I/O 的所有方法(包括 Azure 搜索 SDK 的方法)异步。这可以防止操作系统线程阻塞,从而大大提高应用程序的可扩展性。它还避免了由于缺少对 ConfigureAwait(false) 的调用而导致的潜在死锁问题。

关于azure-cognitive-search - 将 Azure 搜索 SDK 从 v.5.0.3 升级到 v.9。搜索通话挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56119762/

相关文章:

azure - contentOffset 从哪里来?

azure - 如何构造 Azure 搜索查询以返回仅基于特定字段的通配符搜索?

具有 DataType.Complex 及其子字段的 Azure 搜索建议

c# - 在 Azure 搜索 .NET SDK 中按复杂类型排序?

azure - 刷新 Azure 搜索索引

database - Azure 认知搜索能否用作某些数据的主数据库?

azure - 优化 Azure 认知搜索中的条件查询

azure - 如何在 Azure 搜索中查询 Metadata_storage_path 字段的搜索

azure - 管理 Azure 搜索 503

Azure 搜索 SDK 未在合并操作中设置空字段