这是我关于此问题的第二个话题,我尝试了最后一个话题中提供的所有建议。上一个线程的URL在这里:Bot works in Bot Framework Emulator on local computer, but not after it's deployed to Microsoft Azure - HTTP status code NotFound。
按照这些涉及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-内部服务器错误
由于发生内部服务器错误,因此无法显示该页面。
最可能的原因:
您可以尝试的操作:
详细的错误信息:
错误代码:0x00000000
模块:AspNetCoreModule
处理程序:aspNetCore
通知:ExecuteRequestHandler
登录方式:匿名
登录用户:匿名
更多信息:
此错误表示处理请求时出现问题。 Web服务器已接收到该请求,但是在处理过程中发生了致命错误,导致500错误。 View more information »
答案 0 :(得分:0)
这里有个简单的说明,因为似乎有两个不同的问题:
您的Bot Framework Emulator实例似乎有问题-我建议先卸载它,然后从here获取最新版本。
您的机器人无法在生产环境中使用-为了在本地调试生产渠道,您需要确保使用Azure中的值填充应用程序设置中的应用程序ID和应用程序密码,然后能够按照下面的其余说明在生产渠道中进行聊天(模拟器中的团队,WebChat,DirectLine等否),并使生产渠道针对您的本地代码运行,以便您可以设置断点并检查变量以调试问题所在。
调试技术
- 确保已安装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仿真器