c# - 401(未经授权)| Cosmos DB REST API | rest-from-.net
问题描述
我正在为 Cosmos DB Table API尝试rest-from-.net。
设置endpoint
, masterKey
, databaseId
, collectionId
. 我正在使用内部资源 ID。设置x-ms-version
为2017-07-29。
在第 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");
client.DefaultRequestHeaders.Add("ContentType", "application/json");
response = client.GetStringAsync(new Uri(baseUri, resourceLink)).Result;
在GetStringAsync
通话中,我收到 401。
HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
我在 Azure Cosmos DB 帐户上有贡献者角色。
我已经阅读了关于堆栈溢出的这篇文章。
使用 REST API 查询 Azure Cosmos DB 资源适用于 SQL API,而不适用于 Table API。但我遵循了相关的提及部分。
未设置 Authorization 或 x-ms-date 标头。当 Authorization 标头设置为无效的授权令牌时,也会返回 401。
- 在阅读了诊断 Azure Cosmos DB 未授权异常并对其进行故障排除后,我还尝试使用重新生成的读写主键。
为什么授权失败?
解决方案
新的
您应该使用官方示例连接 cosmosdb 表。
azure-cosmos-table-dotnet-core-getting-started
以前的
您应该像下面的代码一样添加熊令牌。
client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer", "Your Oauth token");
推荐阅读
- exception - ARM 编译器如何处理运行时错误?
- python - Python:类和json之间的映射
- azure - 深度传感器的输出有线条吗?
- derby - 一条sql语句中可以存在多个join吗
- reactjs - 如何在不导入整个 Font Awesome 包的情况下使用图标名称作为字符串导入 Font Awesome 图标?
- azure - 应用程序网关前面的 Azure 前门
- javascript - 使用 vuex 从另一条路由访问本地存储中的数据
- c# - 在 C# 中的 SQL CLR 函数中设置小数精度
- python - Spark:如何将元组转换为 DataFrame
- linux - 如果文件描述符关闭,Linux write() 会使应用程序崩溃