【问题标题】:Azure connection attempt failedAzure 连接尝试失败
【发布时间】:2019-10-05 15:18:45
【问题描述】:

我正在使用以下代码进行连接。我可以连接到其他 Azure 资源。

但对于一个资源,我收到以下错误:URL 和密钥是正确的。

{“连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应”}

代码如下

 _searchClient = new SearchServiceClient(searchServiceName, new 
  SearchCredentials(apiKey));
    _httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
    _searchServiceEndpoint = String.Format("https://{0}.{1}", 
  searchServiceName, _searchClient.SearchDnsSuffix);

    bool result = RunAsync().GetAwaiter().GetResult();

有什么想法吗?提前谢谢?我该如何解决这个问题?

【问题讨论】:

  • 可以分享完整的代码吗?

标签: azure


【解决方案1】:
  1. 我将展示这是如何在 c# 中完成的
  2. 你需要一个 appsettings.json
  3. 您需要在 program.cs 文件中使用此代码
  4. 示例中有很多来自document 的其他文件 您可能需要使用、学习和编辑您的用例

在使用 c# 和 azure 工作时,请始终首先了解构建解决方案的文件的独特之处。这就是我们在学习解决方案时从文档中构建示例的原因。接下来,我们必须研究在执行时为整个解决方案提供一个特性或功能的不同代码块。

appsettings.json

{
 "SearchServiceName": "[Put your search service name here]",
 "SearchIndexName": "hotels",
 "SearchServiceAdminApiKey": "[Put your primary or secondary Admin API key here]",
 "SearchServiceQueryApiKey": "[Put your primary or secondary Query API key here]"
}

Program.cs

   namespace AzureSearch.SDKHowTo
{
    using System;
    using System.Linq;
    using System.Threading;
    using Microsoft.Azure.Search;
    using Microsoft.Azure.Search.Models;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Spatial;
     // This sample shows how to delete, create, upload documents and query an index
    static void Main(string[] args)
    {
        IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
        IConfigurationRoot configuration = builder.Build();

        SearchServiceClient serviceClient = CreateSearchServiceClient(configuration);

        string indexName = configuration["SearchIndexName"];

        Console.WriteLine("{0}", "Deleting index...\n");
        DeleteIndexIfExists(indexName, serviceClient);

        Console.WriteLine("{0}", "Creating index...\n");
        CreateIndex(indexName, serviceClient);

        ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName);

        Console.WriteLine("{0}", "Uploading documents...\n");
        UploadDocuments(indexClient);

        ISearchIndexClient indexClientForQueries = CreateSearchIndexClient(indexName, configuration);

        RunQueries(indexClientForQueries);

        Console.WriteLine("{0}", "Complete.  Press any key to end application...\n");
        Console.ReadKey();
    }
 private static SearchServiceClient CreateSearchServiceClient(IConfigurationRoot configuration)
    {
        string searchServiceName = configuration["SearchServiceName"];
        string adminApiKey = configuration["SearchServiceAdminApiKey"];

        SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName, new SearchCredentials(adminApiKey));
        return serviceClient;
    }

    private static SearchIndexClient CreateSearchIndexClient(string indexName, IConfigurationRoot configuration)
    {
        string searchServiceName = configuration["SearchServiceName"];
        string queryApiKey = configuration["SearchServiceQueryApiKey"];

        SearchIndexClient indexClient = new SearchIndexClient(searchServiceName, indexName, new SearchCredentials(queryApiKey));
        return indexClient;
    }

    private static void DeleteIndexIfExists(string indexName, SearchServiceClient serviceClient)
    {
        if (serviceClient.Indexes.Exists(indexName))
        {
            serviceClient.Indexes.Delete(indexName);
        }
    }

    private static void CreateIndex(string indexName, SearchServiceClient serviceClient)
    {
        var definition = new Index()
        {
            Name = indexName,
            Fields = FieldBuilder.BuildForType<Hotel>()
        };

        serviceClient.Indexes.Create(definition);
    }}

要学习的 Azure 概念

  • 我们如何以及为何创建 azure 客户端
  • 我们为什么要使用 appsettings.json
  • 什么是 azure 搜索解决方案的示例文件结构
  • 您想使用哪种编码语言来构建该解决方案
  • 你想使用 azure sdk
  • 如何查找和创建 api 密钥

需要学习的 C# 概念

  • 什么是接口以及如何使用它
  • 如何将文件结构中的一个文件导入到另一个文件中
  • main 函数的工作原理
  • 如何在函数中调用变量
  • 如何用函数调用函数
  • 如何编写服务器端代码与客户端代码
  • 如何将 c# 代码部署到 azure

  • 你用什么版本的c#什么是asp.net,你用什么版本

  • 什么是asp.net core,你用什么版本

您可以看到 azure 和 c# 的学习曲线很高。

幸运的是,您有堆栈溢出和文档来研究上述所有问题等等:)

关于您将如何进行故障排除...我所做的是研究文档示例中的每个代码块并在本地运行所有代码。然后我一次测试每个代码块。你总是通过代码块来测试数据流。因此,您可以通过创建测试变量并将该变量打印到控制台来控制台记录代码块的结果。

因为每个代码块代表一个特性或功能,每个测试将输出该特性或功能的通过或失败交付。因此,您可以设计功能、实施该设计并为新功能创建测试。

【讨论】:

  • 您的答案中有很多缺失的代码。例如,您没有包含 CreateSearchServiceClient 的代码。请包括那些。谢谢。
  • namespace Microsoft.Azure.Search { // // 摘要: // 可用于管理和查询索引和文档的客户端,以及 // 管理 Azure 搜索服务上的其他资源.公共类 SearchServiceClient : ServiceClient, ISearchServiceClient, IDisposable, IAzureClient
猜你喜欢
  • 2014-05-11
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
相关资源
最近更新 更多