【发布时间】:2014-05-20 08:15:48
【问题描述】:
我在 ASP.Net 中创建了一个 Web API 项目,但在验证工作时遇到了一些问题。
API 期望在每个请求的 Authorization 标头中提交一个令牌。检查是否设置了标头的代码检查
HttpRequestMessage.Headers.Authorization
属性为空。前几次我测试这个,我发现这个属性总是空的,但奇怪的是,如果你检查了 HttpRequestMessage.Headers 枚举,授权头设置正确(如果你做了 HttpRequestMessage.Headers.ToString() ,它也会出现在那里)。
更奇怪的是,我发现如果我删除了令牌中发送的一些属性,我可以让它按预期工作。因此,如果标头值的字符长度太长,就好像没有设置 Authorization 属性。不幸的是,即使手动从令牌中删除一些文本,它也会在摘要检查中继续失败,这是应该的!
我找不到任何提到这一点的文档,所以我想知道是否有其他人遇到过它?我不认为 IIS 的标头太长,因为标头值出现在 HttpRequestMessage.Headers.ToString() 中,所以它正在被接收,但由于某种原因它没有被分配给 Authorization 属性。
不幸的是,我无法重新编写检查此属性的代码(这似乎是简单的解决方案),因为它是 Thinktecture 库的一部分(即不是我们自己编写的)。
【问题讨论】:
-
你有解决这个问题的办法吗?我面临着完全相同的问题。如果我的标头是
Authorization: Basic,那么一切正常,但对于Authorization: Digest,它的行为与您上面描述的相同。 -
说实话,我们的组织正计划改变我们正在使用的令牌类型,所以我等待着。幸运的是,新令牌比以前的类型短了很多,所以我不再遇到这个问题。虽然很奇怪,但我并没有真正得到它 - 抱歉!
标签: asp.net http http-headers access-token asp.net-web-api