C# MS Bot Framework V3网络聊天/直拨电话问题-内部服务器错误500

C# MS Bot Framework V3网络聊天/直拨电话问题-内部服务器错误500,c#,botframework,azure-bot-service,C#,Botframework,Azure Bot Service,我对C#和Bot框架(V3)是新手,被要求开始在我加入的一个项目上测试现有的Bot。bot本身在bot Emulator和Skype上运行良好,但由于某些原因,Azure上的web聊天不起作用。由于网络聊天使用的是直拨电话,所以现在它有点停止运行测试。我花了很多时间浏览v3github页面和这里的内容,但是我没有找到解决方案 对话似乎启动OK开始,因为Bot向用户发送了一条消息,但没有发送所有用户响应,Bot响应错误消息“对不起,我的Bot代码有问题”。 见- Azure将其列为500错误-内

我对C#和Bot框架(V3)是新手,被要求开始在我加入的一个项目上测试现有的Bot。bot本身在bot Emulator和Skype上运行良好,但由于某些原因,Azure上的web聊天不起作用。由于网络聊天使用的是直拨电话,所以现在它有点停止运行测试。我花了很多时间浏览v3github页面和这里的内容,但是我没有找到解决方案

对话似乎启动OK开始,因为Bot向用户发送了一条消息,但没有发送所有用户响应,Bot响应错误消息“对不起,我的Bot代码有问题”。 见-

Azure将其列为500错误-内部服务器错误。 看

Azure中的错误消息

然后我查看了ChromeDevTools选项卡中的消息,得到了相同的错误和502错误,最近(或者我以前从未注意到)还有一个CORS错误。 看

Chrome开发工具控制台

在这之后,我在Azure上使用了Application Insights,当我尝试使用Web聊天时,每个实例都有三个项目

  • 一个customEvent(状态代码:200),大概是机器人在对话开始时发送的消息
  • 异常,问题ID为“System.exception at Microsoft.Bot.ChannelConnector.BotAPI+d_u31.MoveNext”
  • 另一个customEvent(状态代码:500)
由于我对C#和Bot框架之间的整个设置不是很熟悉,所以我不确定问题出在哪里。以下是异常消息的屏幕截图-

单一操作ID的消息

例外情况详情(1)

例外情况详情(2)

例外情况详情(3)

例外情况详情(4)

我对这些信息有一些想法:

  • “外部程序集”被描述为“Microsoft.Bot.ChannelConnector,版本=3.2.2.5,区域性=中性,PublicKeyToken=null”-缺少PublicKeyToken是否意味着用户没有因为错误而获得分配的令牌?还是应该先发生这种情况,然后因为用户没有令牌而发生错误
  • 堆栈跟踪指向一个对话框文件中的一行,但是从代码看,我真的看不出问题是什么?实际上,我删除了被标记的部分,但它只是将代码中出现问题的行更改为上一部分,因此我不确定该文件是否存在问题
  • 如果有人对此有任何想法以及问题的原因,我将非常感谢

    此外,我还尝试做了两件事来解决这个问题,但都没有产生任何影响

    • 确保在将配置文件发布到Azure时,勾选“全部删除”框
    • 确保所有软件包都是最新的(包括安装bot.connector.directline软件包,由于某些原因该软件包尚未安装)

      • 因此,我的问题的解决方案是根据史蒂文·坎伯格在上述评论中的建议。虽然我们的州管理层一直在使用不推荐的版本(现在已更新),但这是一个CORS问题,因为机器人位于应用程序服务的不同部署槽中。一旦将应用程序服务的URI添加为可信来源,问题就解决了。感谢Steven Kanberg的帮助。

        您是否使用部署槽进行测试?另外,bot使用什么来管理状态(表存储、CosmosDb等)?好的,谢谢您提供的信息。这是拼图的全部组成部分。新问题:我看到WebChat错误(包括CORS错误)引用了“testboteurope”资源。但是,Application Insights数据引用了“TestSlotNetHope”资源。您是否正在尝试从另一个资源访问一个资源?好的,我还建议您研究一些事情。第一,检查你的机器人是否没有使用状态服务进行状态管理。我看到状态存储调用此服务,但几个月前它已被弃用。您可以在这里阅读更多关于状态服务和其他选项的信息:此外,您还提到使用不同的应用程序服务将机器人程序放在不同的部署槽中。这很有可能是CORS问题的原因。主机web聊天URI应作为可信来源添加到有问题的bot的直连频道中。导航到bot,单击通道刀片并选择Direct Line。滚动到页面底部,在“增强的身份验证选项”下添加URI并单击“完成”。最后,北欧数据中心的Direct Line出现了一些问题。错误持续了几个小时,并且与您的机器人的连接问题相吻合。