【发布时间】:2019-11-09 20:54:57
【问题描述】:
这是我关于这个问题的第二个帖子,我尝试了上一个帖子中提供的关于这个问题的每一个建议。最后一个帖子的 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 下创建了三种资源类型:机器人频道注册、应用服务和应用服务计划。
不幸的是,当我在“机器人管理”下的“网络聊天测试”窗口中为“机器人频道注册”资源输入一条消息时,我收到一条消息,说“无法发送重试”。
当我转到“机器人频道注册”资源的“机器人管理”下的频道时,单击“健康”下的“问题”,我看到此消息:“向您的机器人发送此消息时出错:HTTP 状态代码 InternalServerError。”
以下是上一个帖子中突出显示的一些其他详细信息。正如您将在下面阅读的那样,我绝对考虑到了它们。
在输入此代码之前,在机器人的目录中创建了一个“.deployment”文件,随后创建了一个包含“.deployment”文件的 zip 文件: az webapp deployment source 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),按下运行,我没有在屏幕右侧的“输出”下看到任何异常.在“单击 http://.azurewebsites.net 以打开您的站点 2019-06-27T17:52:04 PID[32228] 信息发送响应”之后的“输出”下的最后一条消息中显示“200.0 OK”。当我单击“http://.azurewebsites.net”链接时,会打开一个新选项卡,我会在顶部看到这条消息:“Bot Started。”
我也尝试过从 Visual Studio 发布。
当我尝试从 Visual Studio 发布时,我按照此页面上的说明进行操作: https://docs.microsoft.com/en-us/visualstudio/deployment/deploying-applications-services-and-components?view=vs-2019
我创建了一个新的 Azure 应用服务,选择了正确的订阅和资源组,关闭了 Application Insights,因为现在不需要它,然后按下“创建”。
然后我按下“发布”。
接下来,我创建了一个机器人频道注册,并从 Visual Studio 中“发布”屏幕顶部的编辑链接添加了目标 URL。在网络聊天中进行测试时,该机器人无法正常工作。
在此阶段在 Azure 中创建 Web 应用程序机器人没有帮助,因为创建似乎需要默认回显或基本机器人模板。
再次详细说明,我尝试在 Azure 中测试的机器人在 Visual Studio 中运行后在机器人模拟器中完美运行。在 Azure 的发布/部署阶段的某个地方存在一个问题。我们可以做些什么来解决这个问题?
更新:
我听从了 Matt Stannett 的建议,他在这个帖子下添加了评论。
我去了监控 > 应用服务日志并启用应用程序日志记录(文件系统)以及详细的错误消息和失败的请求跟踪。
接下来,我转到了监控 > 日志流选项卡。我一直打开这个选项卡并在另一个选项卡中加载网络聊天以查看实时日志。
我将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 »
【问题讨论】:
-
我建议为您的机器人打开 Application Insights,因为它有助于找到底层错误。或者,在您的应用服务上,您可以转到监控 > 应用服务日志并启用应用程序日志记录(文件系统)以及详细的错误消息和失败的请求跟踪。然后您可以转到监控 > 日志流选项卡,一旦此选项卡打开,您应该在另一个选项卡中加载网络聊天,您将能够看到实时日志。收到错误消息后,您应该更新您的问题。
-
非常感谢,马特。我遵循了这些步骤,并将错误消息中的详细信息包含在原始线程底部的日志流部分中。
-
嗯,没有更多的见解。您必须远程调试网络聊天才能看到它发生了什么。我在“调试技术”部分下的回答 here 中概述了此过程 - 黄色区域主要是您感兴趣的区域。
-
嗨,马特。非常感谢您指导我完成这些步骤。我对其中两个步骤有疑问。在“在 Visual Studio 中将 appId 和 appPassword 键值对从 .bot 文件中的生产端点复制到开发端点”这一步中,我将在 appsettings.json 文件中输入“MicrosoftAppId”和“MicrosoftAppPassword”,然后没有别的地方吗?我只是想确定一下。另外,在“确保开发端点的端点值设置为本地主机 URL (localhost:3978/api/messages)”中,我究竟会在哪里更改端点值?跨度>
-
此外,截至今天,当我在 Visual Studio 中运行任何机器人时......当我尝试使用我在进行建议配置之前的设置在机器人模拟器中测试机器人时会发生这种情况更改:以“localhost:3978”作为 URL 的浏览器选项卡启动。我在此选项卡顶部看到一条文本,上面写着“QnA Prompting Bot Started”。这是我部署到 Azure 的机器人模板,但无论我在 Visual Studio 中运行任何机器人以在机器人模拟器中进行测试,我都会看到此消息。我尝试在机器人模拟器中测试的每个机器人都没有响应——可能是因为端点设置。
标签: visual-studio azure botframework bots