【问题标题】:Latest Project Template and Emulator for Bot Framework V3 throws 500 Internal Server ErrorBot Framework V3 的最新项目模板和模拟器引发 500 内部服务器错误
【发布时间】:2016-11-11 16:10:32
【问题描述】:

我使用最新的 Bot 应用程序模板 (http://aka.ms/bf-bc-vstemplate) 创建了一个项目

我确保按照入门页面 (http://docs.botframework.com/en-us/csharp/builder/sdkreference/gettingstarted.html) 中的确切步骤安装了 Visual Studio 2015(社区版)和 nuget 包的最新更新

因为我是在本地测试,所以我也遵循了这些步骤:

当使用模拟器与本地运行的机器人一起工作时,您需要

你的机器人的 URL 设置了 localhost: 从最后一个 步。 注意:需要将路径“/api/messages”添加到您的 URL 使用机器人应用程序模板时。清空 MicrosoftAppId field 清空 MicrosoftAppPassword 字段

在 VS 2015 中运行 Bot App 项目后,我对最新的模拟器(https://aka.ms/bf-bc-emulator)进行了非常基本的测试。当我在模拟器中发送“打字”活动时,我收到“500 Internal Server Error {”消息“:“发生了错误。” }”。

但是,当我对 BotAuthentication 注释发表评论时

//[BotAuthentication]

在模拟器中发送“打字”活动会发送“200 OK”响应。不幸的是,当我在模拟器中输入“Hello”之类的单词时,我得到“500 Internal Server Error {“message”:“发生错误。”}”。

知道为什么会这样吗?

请注意,我没有对默认项目进行任何代码更改,只是在 BotAuthentication 注释中添加了注释。

模拟器的版本是3.0.0.54

更新: 在模拟器显示“500 Internal Server Error {“message”:“An error has occurred.”}”后,我在 VS 输出窗口中看到 Exception throw: 'System.MissingMethodException' in mscorlib.dll

更新

所以我在另一台机器(Windows 8.1)上尝试了确切的设置,因为我正在使用的机器是 Win10 评估版。你猜怎么着,它就像一个魅力......所以我猜这是一个操作系统问题或者 GAC 搞砸了?

【问题讨论】:

    标签: botframework


    【解决方案1】:

    检查您为以下 NuGet 包使用的版本:

    • Microsoft.Rest.ClientRuntime - 1.8.2
    • Newtonsoft.Json - 8.0.3
    • System.IdentityModel.Tokens.Jwt - 4.0.2.206221351

    当我将其中任何一个升级到更高版本时,我在模拟器中运行时看到 500 错误。

    我还必须将我的机器人的安全信息添加到 Web.config。

    <add key="BotId" value="<put your BotId here>" />
    <add key="MicrosoftAppId" value="<put your AppId here>" />
    <add key="MicrosoftAppPassword" value="<put your AppPassword here>" />
    

    您需要将安全信息添加到频道模拟器。

    【讨论】:

    • 谢谢,但是当您在 VS 中创建 Bot App 项目时,默认情况下已经存在
    • 您需要将您的 BotId、MicrosoftAppId 和 MicrosoftAppPassword 添加到这些设置以及模拟器中。
    • 再次,正如我在帖子中提到的,由于我在本地进行测试,因此模拟器中的 Url 设置为 localhost,清空了模拟器中的 MicrosoftAppId 字段和 MicrosoftAppPassword 字段
    • 我最初在模拟器上遇到了同样的问题。在 v1 中,我可以将项目和模拟器中的安全设置留空,但是当我切换到 v3 时,我必须将它们放入以使其正常工作。您的问题可能与我的不同,但我无法让空设置正常工作。
    • 感谢 Bryan 的输入,但我也忘了提到我也尝试为这些键放置实际值。我什至尝试使用注册机器人时获得的值,但没有帮助。也尝试过假值。您是否尝试更改 V1 代码,而不是执行简单的 message.CreateReply ,而是使用 V3 版本的 await connector.Conversations.ReplyToActivityAsync(reply)? - 这是 V3 项目中的默认代码。似乎这是异步调用失败的地方
    【解决方案2】:

    我遇到了同样的问题,我通过在 Post 方法中放置一个 try Catch 块来解决这个问题。实际错误弹出

    解析机器人 ID 时出错

    我只需向我的机器人添加一个 Web 配置条目,如下所示,它就开始工作了

     <add key="BotId" value="your app id"></add>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 2017-06-29
      • 2014-07-01
      • 2017-08-15
      相关资源
      最近更新 更多