微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

401未经授权| Cosmos DB 休息 API | .net 休息

如何解决401未经授权| Cosmos DB 休息 API | .net 休息

我正在为 Cosmos DB Table API 试用 rest-from-.net

设置 endpointmasterKeydatabaseIdcollectionId。我正在使用内部资源 ID。将 x-ms-version 设为 2017-07-29

line 84 之前添加了以下内容

client.DefaultRequestHeaders.Add("Accept","application/json");
client.DefaultRequestHeaders.Add("ContentType","application/json");

现在看起来像下图:

client.DefaultRequestHeaders.Add("x-ms-date",utc_date);
client.DefaultRequestHeaders.Add("x-ms-version","2017-07-29");

//LIST all databases
verb = "GET";
resourceType = "dbs";
resourceId = string.Empty;
resourceLink = string.Format("dbs");

authHeader = GenerateMasterKeyAuthorizationSignature(verb,resourceId,resourceType,masterKey,"master","1.0");

client.DefaultRequestHeaders.Remove("authorization");
client.DefaultRequestHeaders.Add("authorization",authHeader);
client.DefaultRequestHeaders.Add("Accept","application/json");

response = client.GetStringAsync(new Uri(baseUri,resourceLink)).Result;

GetStringAsync 调用中,我收到 401。

HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).

未设置 Authorization 或 x-ms-date 标头。当 Authorization 标头设置为无效的授权令牌时,也会返回 401。

为什么授权失败?

解决方法

您应该使用官方示例连接 cosmosdb 表。

azure-cosmos-table-dotnet-core-getting-started

enter image description here

原始

你应该像下面的代码一样添加熊令牌。

client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer","Your Oauth token");
,

虽然 Querying Azure Cosmos DB resources using the REST API 描述了 Cosmos DB 的 REST 使用,但这种 REST 的使用仅适用于 SQL API,不适用于 Gremlin、Cassandra 或 Table API。不幸的是,该文件没有提到这一点。因此,授权失败。而是参考Table Service REST API

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。