IIS 托管的 Azure Bot 通道注册 Microsoft Bot Framework sdk 聊天机器人不起作用
Posted
技术标签:
【中文标题】IIS 托管的 Azure Bot 通道注册 Microsoft Bot Framework sdk 聊天机器人不起作用【英文标题】:Azure Bot Channel Registration for IIS hosted Microsoft Bot Framework sdk chat bot not working 【发布时间】:2020-10-07 16:33:31 【问题描述】:我使用 Microsoft Bot Framework sdk 创建了一个聊天机器人,当使用 Bot Framework Emulator 以及 Microsoft App Id 和 Secret 在 localhost 上进行测试时,它可以正常工作。然后,我使用正确的 SSL 证书将机器人部署在可公开访问的 IIS Web 服务器上,并在导航到其链接时显示正确的“您的机器人已准备好!”页面显示它已启动并正在运行。
然后,我在 Azure 上创建了一个 Bot Channels Registration,并将消息传递端点连接到我的 IIS Web 服务器上托管的机器人。但是,当我尝试“在网络聊天中测试”时,机器人什么也没有显示,并且在用户界面中也没有出现错误。但是查看浏览器的开发工具控制台,有几个错误表明我的机器人 URL 被 CORS 策略从 azure 门户阻止,如下所示。有没有人遇到过这种情况和/或有可能的解决方案?谢谢!
从源“https://portal.azure.com”访问“https://MyBotUrl/api/messages/”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。 :1 从源 'https://portal.azure.com' 访问 XMLHttpRequest 在 'https://portal.azure.com' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:不存在 'Access-Control-Allow-Origin' 标头在请求的资源上。
【问题讨论】:
【参考方案1】:您是否在 IIS 中配置了 CORS?如果没有,您将需要这样做。允许来源https://portal.azure.com
。这是 .NET Framework 还是 .NET Core bot(或其他)?
不确定是否需要,但有一个IIS CORS module。
【讨论】:
感谢您的回复,这是一个针对 .NET Core 2.1 的 .NET Core 机器人。我已将值为“portal.azure.com”的自定义标头 Access-Control-Allow-Origin 添加到 IIS Web 配置,并在机器人本身的 startup.cs 文件中设置 .Net Core 中间件 CORS 策略。我还在网络服务器上安装了 IIS CORS 模块并执行了 iisreset,但行为仍然相同。我实际上想知道我在 azure 端的 bot 通道注册资源是否存在 CORS 问题,但我在 Bot 通道注册资源中看不到任何配置 CORS 的地方? 那么,完成上述所有操作后,您在浏览器的开发工具网络请求中看不到这些标头吗?如果不是,那么它仍然是服务器端的东西(在 IIS 或 .net 核心中。不确定是哪个)。 同意,我将 X-Custom-Header、x-ms-client-session-id、x-ms-client-request-id、x-ms-effective-locale 添加到 Access-Control-允许标题。我设置了 GET、POST 和 Access-Control-Allow-Origin portal.azure.com 的 Access-Control-Allow-Methods。现在我收到一条错误消息,指出 Origin 标头有多个 url,它们都是 portal.azure.com。我正在尝试更多的东西,希望我能接近。 现在我收到了状态 400 错误“需要升级到 WebSocket”。在尝试网络聊天测试时。以上是关于IIS 托管的 Azure Bot 通道注册 Microsoft Bot Framework sdk 聊天机器人不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Azure Bot Service 的 Teams 通道的 IP 地址限制
我们可以在没有 Azure 的情况下在 IIS 中部署 Microsoft bot 应用程序吗?