首页 > 解决方案 > 401(未经授权)| Cosmos DB REST API | rest-from-.net

问题描述

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

设置endpoint, masterKey, databaseId, collectionId. 我正在使用内部资源 ID。设置x-ms-version2017-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).

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

为什么授权失败?

标签: c#azurerestazure-cosmosdbazure-table-storage

解决方案


新的

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

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

在此处输入图像描述

以前的

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

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

推荐阅读