Я следую руководству по космосдб с CORE SQL и пытаюсь создать базу данных.
EndpointUri и Key верны, скопированы из учетной записи CosmosDB => настройки => ключи.
const string EndpointUri = "https://fergerg.azure.com:443/";
const string Key = "gvfvfdevgrvgre";
Затем при создании базы данных:
string databaseName = "demoDB_" + Guid.NewGuid().ToString().Substring(0, 5);
client = new CosmosClient(EndpointUri, Key);
database = await client.CreateDatabaseIfNotExistsAsync(databaseName);
Возвращается ошибка 403
Необработанное исключение. System.AggregateException: одна или несколько ошибок произошел. (Код состояния ответа не указывает на успех: запрещено. (403); Подстатус: 0; Идентификатор активности: e10466; Причина: ({"code":"Запрещено","message":""Операция 'POST' на ресурсе 'dbs' не разрешено через конечную точку Azure Cosmo DB. Пожалуйста, включите такой операции для вашей учетной записи или выполните эту операцию через Azure Менеджер ресурсов, портал Azure, Azure CLI или Azure. Powershell"\r\nActivityId: 14d3a978f6ee10466, Microsoft.Azure.Documents.Common/2.14.0"} RequestUri: https://sql-iknn-.documents.azure.com/dbs
Таким образом, POST запрещен на базах данных конечных точек:
documents.azure.com/dbs
Я думаю, что это изменилось, раньше это работало, но теперь это невозможно из коробки.
Как мне дать разрешение на отправку POST-запросов в эту конечную точку из удаленного кода?
Необработанное исключение. System.AggregateException: произошла одна или несколько ошибок. (Код состояния ответа не указывает на успех: Запрещено (403); Подстатус: 0; ActivityId: e10466;
Вышеупомянутая ошибка возникает из-за несоответствия учетных данных аутентификации, недостаточных разрешений или неправильной настройки параметров брандмауэра или виртуальной сети. Обязательно разрешите public
доступ к базе данных, если нет необходимости в частном подключении. Обратитесь к этому документу для получения дополнительной информации о запрещенных исключениях.
Ниже приведен пример создания базы данных в Azure Cosmos DB.
class Program
{
private static readonly string EndpointUri = "*****";
private static readonly string Key = "*****";
static async Task Main(string[] args)
{
string databaseName = "secondDb" + Guid.NewGuid().ToString().Substring(0, 5);
using (CosmosClient client = new CosmosClient(EndpointUri, Key))
{
DatabaseResponse response = await client.CreateDatabaseIfNotExistsAsync(databaseName);
if (response.StatusCode == System.Net.HttpStatusCode.Created)
{
Console.WriteLine($"Database '{databaseName}' created successfully.");
}
else
{
Console.WriteLine($"Failed to create database '{databaseName}'. Status code: {response.StatusCode}");
}
}
}
}
Выход:
Database secondDb4a663 created successfully.
вы создали учетную запись CosmosDB с помощью SQL CORE API?
Обратитесь к этому документу за
forbidden
исключениями.