c# - IIS 托管的 Azure Bot 通道注册 Microsoft Bot Framework sdk 聊天机器人不起作用
问题描述
我使用 Microsoft Bot Framework sdk 创建了一个聊天机器人,该 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 ”访问“ https://MyBotUrl/api/messages/ ”的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
解决方案
您是否在 IIS 中配置了 CORS?如果没有,您将需要这样做。允许原点https://portal.azure.com
。这是 .NET Framework 还是 .NET Core bot(或其他)?
不确定是否需要,但有一个IIS CORS 模块。
推荐阅读
- uwp - 如何以编程方式强制 IAsyncOperation 进入错误状态?
- python-3.x - 如何在 Selenium 中选择文本区域?
- javascript - 同一个数组有不同的长度?
- powershell - 需要为 powershell 中的搜索文件导入和转换 HTML
- google-cloud-platform - Google Cloud Platform REST API 中的 OAUTH_TOKEN
- javascript - 要求 HTML 表单日期字段在特定时间范围参数内
- javascript - 使用 javascript,如何使字符串只有字母、数字和句点。删除所有其他字符
- ios - dyld:无法加载插入的库,但适用于模拟器和另一部 iPhone
- c++ - 谁能告诉我我用 getline 格式做错了什么(cpp)
- python - 尝试在 Windows 10 上安装 psycopg2 时遇到问题