1

我在尝试创建机器人时遇到问题。当我使用 Http 时,一切似乎都运行良好。我可以将我的应用程序部署到我的网站并通过模拟器或 botframework.com 与机器人交互。

不幸的是,当我尝试使用 HTTPS 时,我从模拟器中收到 401 错误,并且当我尝试使用 botframework.com 时没有任何显示。

为了让我很清楚,我唯一改变的是: 1. 将 [BotAuthentication] 属性添加到我的 ApiController 中,如下所示:

[BotAuthentication]
public class MessagesController : ApiController
  1. 将 emulator/botframework.com 中的 URL 从http://mywebsite.com/api/messages更新为https://mywebsite.com/api/messages

Web.config 全部设置了 appId 和 AppSecret。我的网站已经有 SSL 证书。

有什么我想念的吗?尽管在假设我不需要设置其他任何东西之前我从未使用过基本身份验证,对吧?

4

2 回答 2

1

我达到了您的目标,而 IIS 正在响应基本身份验证并妨碍您。

基本身份验证的工作方式如下: 有一个标头,其中包含编码为 base64 的 UserId:Password 如果服务器没有看到标头,它会返回一个带有“基本”的 403,以表明网站需要身份验证令牌。对于 Web 浏览器,这意味着它将弹出一个普通用户/密码对话框,然后它会再次使用标题提交请求。如果提供了标头但用户/密码错误,则服务器返回 401。

通常基本身份验证用于在数据库中查找,但在我们的例子中只有 1 个用户,它是 bot appid/appsecret。BotAuthorization 属性所做的就是向请求管道添加一个检查器,以查找其中包含 appid/appsecret 的标头,以确保只有经过批准的调用者才能调用您的机器人。

如果您不关心这一点,您可以简单地删除该属性。无论如何,您不希望 IIS 将其置于进程中。

说得通?

于 2016-04-23T17:06:37.510 回答
0

从理论上讲,这应该根据您对所做更改的描述起作用。这是与您的云服务或本地主机上的机器人交谈的模拟器?您是否也从门户中的 Bot Framework 测试控件中收到此错误?

如果您将您的 BotId 发送给我 botframework@microsoft.com,我可以查看我们的日志以查看是否有任何有趣的内容(或在 Twitter 上的 @jameslew 与我联系)。

于 2016-04-22T19:40:26.507 回答