如何解决 Bot Framework Channel Emulator 中的“500 内部服务器错误”错误?

How to resolve the error as “500 internal server error” in Bot Framework Channel Emulator?

本人从事Bot框架技术,最近微软发布了bot的新版本(V3)。 我已经使用旧版本开发了机器人,现在我正在尝试将我的机器人升级到新版本。 为此,一切正常,但在将我的机器人发布到 azure 之后,然后通过使用发布 URL 我试图在机器人框架通道模拟器 (3.0.0.54) 中进行测试,它总是给出“500,内部服务器错误”。 但是,当我将 Skype 频道添加到我的机器人时,它会正常工作。

唯一的问题是当我在 bot 框架通道模拟器中测试我的 bot 应用程序的 Published URL 时,只有我收到错误 "Internal server error".

我认为最新版本的 bot 框架通道模拟器可能有问题

他们刚刚发布了框架的更新版本 (3.0.1),解决了 3.0.0 引入的一些问题。尝试更新到 3.0.1,看看是否能解决您的问题(它解决了我的问题)。 source

您可能还需要遵循 this tutorial 并使用 ngrok 允许您从模拟器访问您发布的聊天机器人。该教程中有一个屏幕截图显示了模拟器中正在使用的 BotId,它不是必需的,因此您可以忽略它。

开发者在 上发布了一个答案。

基本上你可以键入 'disable' 来禁用 AppId/AppPassword

在调试的过程中,你只要不禁用appid和密码,而是将它们留空并重新构建,你就可以通过模拟器进行调试了 保持如下所示

不要只禁用 BotId、AppID、密码,而是将它们设为空白,如下所示

<add key="BotId" value="" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" />

ngrok http -host-header=rewrite 9000

screenshot

  • 如屏幕截图所示,复制 使用 https 转发 URL 并将其粘贴到模拟器中 url
  • 模拟器端口应为 9000,模拟器 Url 应包含 ngrok 转发 Https URL

注意:ngrok 应该处于 运行ning 状态。如果您在下次尝试时遇到相同的 500 错误,请从第 1 步开始。 更多参考.https//docs.botframework.com/en-us/tools/bot-framework-emulator/#navtitle

我发现控制器中除了 Post 之外的单个 public 方法会使 Bot Framework 抛出 500 InternalServerError。只需在您的控制器中仅保留 private 和 public Post 方法即可修复它。

ngrok 解决方案对我不起作用。我刚刚评论了 botAuthentication,然后它在本地对我有用。

  //[BotAuthentication]
    public class MessagesController : ApiController
    {

似乎如果您将机器人部署到云端并尝试从模拟器对其进行测试,它似乎会出现此错误。 模拟器似乎在 2 种情况下工作:

1- 禁用安全性的本地主机(删除应用程序 ID 和应用程序密码)

2- 启用安全的本地主机(添加应用程序 ID 和应用程序密码)

两个端点都通过 http 仅因为它是本地主机。如果部署到云,您可以在 Bot Portal 上可用的模拟器中对其进行测试。确保托管机器人的端点已启用 https。

我按照此疑难解答指南中的步骤进行了操作,它为我修复了它:https://docs.microsoft.com/en-us/bot-framework/troubleshoot-authentication-problems

虽然我不明白究竟是什么导致了这个问题。我注意到的是:桌面模拟器仅适用于本地主机。