首页 > 解决方案 > POST 到机器人的端点失败,HTTP 状态为 502

问题描述

我开发了一个聊天机器人botframework,它工作正常,部署在天蓝色也很好。

然后我添加了KeyVault服务并再次发布,但这次我收到 502 错误,并且在appInsights此日志中:

   Microsoft.Bot.Schema.BotException:
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.7, Culture=neutral, PublicKeyToken=null)
   Inner exception System.Exception handled at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext:
   at Microsoft.Bot.ChannelConnector.BotAPI.ThrowOnFailedStatusCode (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.7, Culture=neutral, PublicKeyToken=null)
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.7, Culture=neutral, PublicKeyToken=null)

当我删除(注释部分)实现 KeyVault 服务的代码时,它再次起作用:

 public static IWebHost CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((ctx, builder) =>
                    {
                       // var keyVaultEndpoint = GetKeyVaultEndpoint();
                       // if (!string.IsNullOrEmpty(keyVaultEndpoint))
                       // {
                       //     var azureServiceTokenProvider = new AzureServiceTokenProvider();
                       //     var keyVaultClient = new KeyVaultClient(new  VaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
                       //    builder.AddAzureKeyVault(keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                       //  }
                    }
                ).UseStartup<Startup>()
                .Build();

        private static string GetKeyVaultEndpoint() => "https://XXX.vault.azure.net/";

这些是我已经实现的Docs中的步骤和代码

标签: azure.net-corebotframeworkazure-keyvault

解决方案


This is typically because the bot times out. The bot needs to respond within 15 seconds to the direct line channel. You can do further debugging/logging/testing to see if this is the scenario in this case. You can also use Ngrok to debug locally to see if needed.


推荐阅读