Bot在本地计算机上的Bot Framework Emulator中工作,但在将其部署到Microsoft Azure后无法使用:“ HTTP状态代码未找到”(第二个线程)

时间:2019-06-27 19:51:34

标签: visual-studio azure botframework bots

这是我关于此问题的第二个话题,我尝试了最后一个话题中提供的所有建议。上一个线程的URL在这里:Bot works in Bot Framework Emulator on local computer, but not after it's deployed to Microsoft Azure - HTTP status code NotFound

我遵循了https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-deploy-az-cli?view=azure-bot-service-4.0&tabs=newrg上的确切指示。

按照这些涉及Azure CLI的说明进行操作之后,我在Azure订阅ID下创建了三种资源类型:Bot Channels Registration,App Service和App Service Plan。

不幸的是,当我在“ Bot频道注册”资源的“ Bot管理”下的“在Web聊天中测试”窗口中输入消息时,我收到一条消息,说“无法发送重试”。

当我转到“ Bot管理”下的“ Bot频道注册”资源中的频道时,单击“运行状况”下的“问题”,我看到此消息:“将此消息发送到您的机器人时出错:HTTP状态代码InternalServerError。”

以下是在最后一个线程中突出显示的一些其他详细信息。我一定会考虑到它们,您将在下面阅读。

在输入此代码之前,在漫游器目录中创建了一个“ .deployment”文件,随后创建了一个在其中包含“ .deployment”文件的zip文件: az webapp部署源config-zip --resource-group“” --name“” --src“ code.zip”

我转到了此链接,并且在该页面的“ WWWROOT”部分下看到了21个.dll文件: https:/。scm.azurewebsites.net/dev/wwwroot /

我转到了该URL(https://.scm.azurewebsites.net/dev/wwwroot/:vs.output),按了run键,但在屏幕右侧“输出”下没有发现任何异常。 。在“单击http://.azurewebsites.net打开您的站点2019-06-27T17:52:04 PID [32228]信息发送响应”之后,在“输出”下的最后一条消息中,它说“ 200.0 OK”。单击“ http://.azurewebsites.net”链接,将打开一个新标签,并且我在顶部看到此消息:“机器人启动。”

我还尝试了从Visual Studio发布。

当我尝试从Visual Studio发布时,我遵循此页面上的指示: https://docs.microsoft.com/en-us/visualstudio/deployment/deploying-applications-services-and-components?view=vs-2019

我创建了一个新的Azure App Service,选择了正确的订阅和资源组,由于目前不需要,因此关闭了Application Insights,然后按“创建”。

然后我按下“发布”。

接下来,我创建了一个Bot频道注册,并从Visual Studio中“发布”屏幕顶部的编辑链接添加了目标URL。在网络聊天中进行测试时,该机器人无法正常工作。

在当前阶段在Azure中创建网络应用程序漫游器无济于事,因为创建时似乎需要默认回显或基本漫游器模板。

再次说明一下,我要在Azure中测试的bot在Visual Studio中运行后,在bot模拟器中可以完美运行。在发布/部署阶段到Azure的某个地方存在问题。我们该怎么解决这个问题?


更新:

我遵循了Matt Stannett的建议,他在此主题下添加了评论。

我去了“监视”>“应用服务日志”,并启用了“应用日志”(文件系统)以及“详细错误消息”和“失败请求跟踪”。

接下来,我转到“监视”>“日志流”选项卡。我一直打开此选项卡,并在另一个选项卡中加载了Web Chat,以查看实时日志。

我将html代码转换为pdf格式,并读取了结果。

以下是有关错误消息的顶级信息:

HTTP错误500.0-内部服务器错误

由于发生内部服务器错误,因此无法显示该页面。

最可能的原因:

    IIS已收到请求;但是,在执行过程中发生了内部错误 处理请求。此错误的根本原因取决于 在哪个模块上处理请求以及 发生此错误时的工作进程。
  • IIS无法访问网站的web.config文件或 应用。如果设置了NTFS权限,可能会发生这种情况 错误地。
  • IIS无法处理网站或应用程序的配置。
  • 经过身份验证的用户无权使用此DLL。
  • 该请求已映射到托管处理程序,但.NET可扩展性 功能未安装。

您可以尝试的操作:

  • 确保web.config文件的NTFS权限正确 并允许访问Web服务器的计算机帐户。
  • 检查事件日志以查看是否记录了任何其他信息。
  • 验证DLL的权限。
  • 如果请求已映射到托管处理程序,则安装.NET可扩展性功能。
  • 创建跟踪规则以跟踪对此HTTP状态代码的失败请求。有关为失败的请求创建跟踪规则的更多信息,请单击此处。

详细的错误信息:

错误代码:0x00000000

模块:AspNetCoreModule

处理程序:aspNetCore

通知:ExecuteRequestHandler

登录方式:匿名

登录用户:匿名

更多信息:

此错误表示处理请求时出现问题。 Web服务器已接收到该请求,但是在处理过程中发生了致命错误,导致500错误。 View more information »

1 个答案:

答案 0 :(得分:0)

这里有个简单的说明,因为似乎有两个不同的问题:

  1. 您的Bot Framework Emulator实例似乎有问题-我建议先卸载它,然后从here获取最新版本。

  2. 您的机器人无法在生产环境中使用-为了在本地调试生产渠道,您需要确保使用Azure中的值填充应用程序设置中的应用程序ID和应用程序密码,然后能够按照下面的其余说明在生产渠道中进行聊天(模拟器中的团队,WebChat,DirectLine等),并使生产渠道针对您的本地代码运行,以便您可以设置断点并检查变量以调试问题所在。

基于指南herehere的说明:

调试技术

  • 确保该机器人在本地运行。
  • 通过Kudu在App Service的“开发工具”>“高级工具”下检查日志流或日志文件。您还可以为您的App Service监视“ App Service日志”下的Application logs,然后在另一个选项卡/窗口中的Web聊天中测试bot时,通过App Service的日志流部分查看日志流。
  • 检查App Settings项是否存在并且正确(密码,应用程序ID等)。
  
      
  • 确保已安装ngrok。
  •   
  • 在Visual Studio中打开解决方案。
  •   
  • 在Visual Studio中开始调试。
  •   
  • 记下已打开网页的localhost地址中的端口(应为3978)。
  •   
  • 导航到您提取ngrok的目录。
  •   
  • 在地址栏中输入cmd,然后按Enter键以打开一个新的命令提示符窗口。
  •   
  • 创建一个可公开访问的URL,该URL将指定端口上的所有http流量通过隧道传输到您的计算机:
  •   
  • ngrok http 3978 --host-header = localhost
  •   
  • 复制https转发URL。
  •   
  • 这应为https://(characters-here).ngrok.io的形式。
  •   
  • 使运行ngrok的命令提示符窗口保持打开状态,因为一旦关闭,URL将不再可访问。
  •   
  • 停止调试。
  •   
  • 在Azure门户中,打开Web App Bot资源。
  •   
  • 转到Bot管理>设置>配置,然后将该URL复制到说明字段中,以便将其保存在某处。
  •   
  • 将/ api / messages之前的端点URL文本框中的所有内容替换为ngrok URL。
  •   
  • 最终网址应为https://(ngrok-url)/api/messages形式。
  •   
  • 单击“保存”(您已在文本框外单击以启用“保存”按钮)。
  •   
  • 转到“应用服务”>“设置”>“配置”,并记下MicrosoftAppId和MicrosoftAppPassword的值。
  •   
  • 在Azure门户中,App Service Visual的“配置”>“应用程序设置”选项卡下,将MicrosoftAppId和MicrosoftAppPassword条目的值复制到appsettings.json文件中的匹配条目中(因为您将针对本地运行生产终结点代码,您需要设置所有相关密钥)。
  •   
  • 在Visual Studio中保存您的更改。
  •   
  • 在Visual Studio中开始调试。
  •   
  • 在Azure的Web聊天中打开测试。
  •   
  • 测试漫游器功能。
  •   
  • 应该击中您在代码中设置的任何断点。
  •   

清理步骤-重要!

  
      
  • 将Azure中Web App Bot的消息传递终结点URL恢复为原始值并保存更改。
  •   
  • 撤消/还原对appsettings.json文件的所有更改。
  •   
  • 关闭运行ngrok的命令提示符窗口。
  •   
  • 关闭Bot Framework仿真器
  •