我尝试使用以下代码使用CosmosDb collection
和Primary Key
来阅读Primary Read Only Key
中的文档。
DocumentClient _documentRUClient = new DocumentClient(new Uri(EndPointURI), PrimaryKey);
DocumentClient _documentRClient = new DocumentClient(new Uri(EndPointURI),
ReadOnly_PrimaryKey);
var result = _documentRUClient.CreateDocumentQuery<T>
(UriFactory.CreateDocumentCollectionUri(DataBaseId, CollectionId),
new FeedOptions() { EnableCrossPartitionQuery = true}).AsEnumerable().ToList();
var result2 = _documentRClient.CreateDocumentQuery<T>
(UriFactory.CreateDocumentCollectionUri(DataBaseId, CollectionId),
new FeedOptions() { EnableCrossPartitionQuery = true}).AsEnumerable().ToList();
使用DocumentClient
的{{1}}检索Cosmos DB集合中的文档没有任何问题。但是使用Primary Key
的那个会引发以下错误。
输入授权令牌无法提供请求。请检查 根据协议构建预期的有效负载,并检查 正在使用的密钥。服务器使用以下有效负载进行签名:&#39; get
sat,03 mar 2018 06:47:04 gmt
&#39; ActivityId:d57786a0-f7a0-46e9-9375-d5251b81b1e3, Microsoft.Azure.Documents.Common / 1.20.108.4, documentdb-dotnet-sdk / 1.20.2主机/ 64位 MicrosoftWindowsNT / 10.0.16299.0
如何克服这个问题?
答案 0 :(得分:1)
当我设置了错误的只读键时,我重现了你的问题。
示例代码:
using Microsoft.Azure.Documents.Client;
using System;
using System.Linq;
namespace ConsoleApp2
{
class Program
{
private static DocumentClient client;
static string endpoint = "https://***.documents.azure.com:443/";
static string key1 = "***";
static string DataBaseId = "db";
static string CollectionId = "coll";
static void Main(string[] args)
{
client = new DocumentClient(new Uri(endpoint), key1);
var result = client.CreateDocumentQuery
(UriFactory.CreateDocumentCollectionUri(DataBaseId, CollectionId),
new FeedOptions() { EnableCrossPartitionQuery = true }).AsEnumerable().ToList();
Console.WriteLine("aaa");
Console.ReadLine();
}
}
}
返回消息:
我建议您通过Fiddler捕获消息并检查您的只读密钥是否正确。
希望它对你有所帮助。