c# - 将机器人部署到 Azure 后,在网络聊天键入消息中进行测试返回“未找到”HTTP 状态代码
问题描述
我在 azure 门户中创建了一个 Web App Bot 服务,下载了它,对其进行了修改,在可以运行的 Bot 模拟器上对其进行了测试,然后将其部署回 Azure。在 Azure 中创建了 Bot Channels Registration 和 App Service。我预计原始 Web App Bot 的行为会更新,但是当我在 Web Chat 中进行测试时,它仍然是航班预订示例的默认机器人。当我在 Bot Channels Registration 资源的 Web Chat 测试中键入消息时,我收到“无法发送重试”和“向您的机器人发送此消息时出错。HTTP 状态代码:未找到”
我尝试更改 Microsoft App ID 和密码以及消息传递端点以匹配我在本地测试时使用的端点。我还尝试通过 Visual Studio 发布,而不是使用带有此链接https://www.c-sharpcorner.com/article/publish-your-bot-to-microsoft-azure/的 Azure CLI,但他们使用的应用程序不是 .net核心,它没有部署在我的项目中。我已经用尽了每个链接,但仍然没有找到解决方案。
解决方案
通过 Visual Studio 部署
该教程的基础知识很好,尽管超级过时并且不是官方教程/文档。由于您从 Azure 下载了您的机器人,因此您唯一需要发布的是:
- 在 Visual Studio 中右键单击您的项目,选择发布
- 点击新建
- 应用服务 > 选择现有
- 选择您的应用服务
- 点击确定,它将发布
通过 Azure CLI 部署
遵循部署文档
对部署进行故障排除
老实说,当部署失败时,我发现最好从头开始新的部署,以确保我准确地遵循每个步骤。这通常比尝试对失败的部署进行故障排除和修复要快。话虽如此,这就是您提到的每个问题可能存在的问题:
我希望原始 Web App Bot 的行为会更新,但是当我在 Web Chat 中进行测试时,它仍然是带有航班预订示例的默认机器人
可能的问题:
- 部署实际上并不成功
- 您部署到错误的资源组
确保你使用的是最新的 Azure CLI,然后重试。
有时,如果您通过 Visual Studio 发布,则右键单击项目,选择发布、编辑、设置,然后在“文件发布选项”下,选中“在目标位置删除其他文件”。请注意,这可能不是您在使用较新的机器人时遇到的问题。
当我在 Bot Channels Registration 资源的 Web Chat 测试中键入消息时,我收到“无法发送重试”和“向您的机器人发送此消息时出错。HTTP 状态代码:未找到”
这通常意味着端点是错误的。在您的 Web App Bot > 设置中,确保消息传递端点是:
https://<yourAppService>.azurewebsites.net/api/messages
我回答了一个类似的问题,用户尝试通过 AZ CLI 进行部署,但他们错过了这一步:
az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "MyBot.csproj"
我尝试更改 Microsoft App ID 和密码以及消息传递端点以匹配我在本地测试时使用的端点。
正确的 MicrosoftAppId 和 MicrosoftAppPassword 可在您的应用程序注册面板中找到。如果您需要新的 MicrosoftAppPassword,请打开您的 App Registration,转到 Certificates and secrets,然后单击 New Client Secret。请务必复制它,因为如果您离开该页面,您将无法再次查看它。
这些需要在三个地方设置:
appsettings.json
文件(或节点.env
)。- Azure 门户 > 资源组 > 应用服务 > 配置
- 在模拟器中测试时
推荐阅读
- python - 如何根据范围过滤数字?
- r - ggplot() 有错误:需要 TRUE/FALSE 的地方缺少值
- r - knitr:当我编译我的 .Rnw 文件时,为什么“环境”面板中什么也没有出现
- c# - 是否可以从 c# 中的自定义类中删除属性
- mysql - 具有多个帐户的应用程序的数据库结构应该是什么,每个帐户具有相似类型的数据?
- java - 无法识别错误推理 - 与 ArrayList 和 FOR 循环相关,我该如何修复我的代码?
- c++ - 在 qwebview qt 上使用 qwebelement 进行虚假点击
- mysql - Mysql 上的 Gtfs 数据库 - 搜索区域内的路线时查询缓慢
- php - 如何将变量与 Curl 代码 Php 连接起来
- file - 批处理文件将子文件夹内容从映射位置移动到服务器