【问题标题】:Azure Search .NET SDK: SearchIndexClient & Dependency InjectionAzure 搜索 .NET SDK:SearchIndexClient 和依赖注入
【发布时间】:2021-06-04 09:00:17
【问题描述】:

将 SearchIndexClient 注册到 DI 容器的推荐方法是什么? (假设我们只有一个索引) 将其注册为单例还是瞬态?

【问题讨论】:

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


    【解决方案1】:

    简短的回答是,您应该将其注册为单例,只要您确保避免使用非线程安全的属性和方法。它们中的大多数是线程安全的;只要避免从多个线程设置可变属性就可以了。

    要更深入地讨论为什么这是推荐的做法以及如何将其扩展到更复杂的场景,请参阅related question

    【讨论】:

      【解决方案2】:

      ASP.NET Core 应用中,您可以按如下方式注入客户端。

      安装包:Microsoft.Extensions.AzureAzure.Search.Documents(这是最新的)

      startup.csConfigureServices方法中,注册客户端:

      using Microsoft.Extensions.Azure;
      
      public void ConfigureServices(IServiceCollection services)
      {
          services.AddAzureClients(builder =>
          {
              builder.AddSearchIndexClient(new 
                  Uri("my resource url"), new 
                  AzureKeyCredential("my resource key"));
          });
      
          services.AddControllers();
      }
      
      

      现在说你想在你的控制器中使用客户端,你可以像这样注入它:

      public class MyApiController : ControllerBase
      {
          private readonly SearchIndexClient _searchIndexClient;
        
          public MyApiController(SearchIndexClient searchIndexClient)
          {
              _searchIndexClient = searchIndexClient;
          }
      
      }
      

      您可能不想将您的凭据直接放在ConfigureServices 中,在这种情况下,您可以将它们存储在appsettings.Development.json(或appsettings.Production.json)中:

        "SearchDocument": {
          "endpoint": "my resource url",
          "credential": { "key": "my resource key" }
        }
      

      并在ConfigureServices 中执行此操作:

      services.AddAzureClients(builder =>
      {   
          builder.AddSearchIndexClient(
              Configuration.GetSection("SearchDocument")); 
      });
      

      阅读更多关于Dependency injection with the Azure SDK for .NET的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2020-03-09
        • 2016-05-22
        • 1970-01-01
        • 2020-12-20
        • 2018-06-28
        相关资源
        最近更新 更多