Невозможно подключиться к Azure учетной записи Cosmos Db с помощью Microsoft.EntityFrameworkCore.Cosmos - код состояния ответа - PullRequest
1 голос
/ 21 февраля 2020

Поставщик CosmosDb отправляет это сообщение:

«Код состояния ответа не указывает на успех: 503 Подстатус: 0 Причина: (Запрос не выполнен, поскольку клиент не смог установить sh подключений к 3 конечным точкам в 1 регионах. Пожалуйста, проверьте наличие проблем с ресурсом клиента и проверьте соединение между клиентом и сервером. ”

В моих тестах это работает (ядро. net 3.1):

Task.Run(async () =>
        {
            var endpoint = “test”;
            var masterKey = “test”;
            using (var client = new DocumentClient(new Uri(endpoint), masterKey))
            {
                //Insert new Document  
                Console.WriteLine("\r\n>>>>>>>>>>>>>>>> Creating Document <<<<<<<<<<<<<<<<<<<");
                dynamic candidato = new
                {
                    Id = 1,
                    Nome = "Test"
                };

                var document1 = await client.CreateDocumentAsync(
                    UriFactory.CreateDocumentCollectionUri("Test", "Test"),
                    candidato);

                Console.ReadKey();
            }

        }).Wait();

Это не:

            Task.Run(async () =>
            {
                using (var context = new StudentsDbContext())
                {
                    context.Add(new FamilyContainer(2, "Test"));
                    await context.SaveChangesAsync();
                }

            }).Wait();

public class FamilyContainer
{
    public int Id { get; set; }
    public string Nome { get; set; }

    public FamilyContainer(int id, string nome)
    {
        Id = id;
        Nome = nome;
    }

}

public class StudentsDbContext : DbContext
{
    public DbSet<FamilyContainer> FamilyContainer { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseCosmos(
           "test",
           "test",
           "FamilyDatabase",
           options =>
           { }
         );
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<FamilyContainer>(x =>
        {
            x.ToContainer("FamilyContainer");
        });
    }
}

Пакеты

Кто-нибудь может мне помочь? Спасибо

fail: Microsoft.EntityFrameworkCore.Update [10000] Исключительная ситуация в базе данных при сохранении изменений для типа контекста '...'. Microsoft.EntityFrameworkCore.Storage.RetryLimitExceededException: максимальное количество повторов (6) превышено при выполнении базы данных операции с CosmosExecutionStrategy. См. внутреннее исключение для самого последнего сбоя. ---> Microsoft. Azure .Cosmos.CosmosException: Код состояния ответа не указывает на успех: 503 Подстатус: 0 Причина: (Microsoft. Azure .Documents.ServiceUnavailableException: служба в настоящее время недоступна. 21T16: 34: 09.1834993Z», "RequestEndTimeUt c": "2020-02-21T16: 34: 41.3484203Z", "RequestLatency": "00: 00: 32,1649210", "IsCpuOverloaded" ложь "NumberRegionsAttempted": 1, "ResponseStatisticsList": [{"ResponseTime": "2020-02-21T16: 34: 11.5964152Z", "ResourceType": 2, "OperationType": 0, "StoreResult": "StorePhysicalAddress: rntbd: ... / , LSN: -1, GlobalCommittedLsn: -1, PartitionKeyRangeId:, IsValid: True, StatusCode: 410, SubStatusCode: 0, RequestCharge: 0, ItemLSN: -1, SessionToken:, UsingLocalLSN: False, TransportException: произошла ошибка транспорта клиента: Не удалось подключиться к удаленной конечной точке. (Время: 2020-02-21T16: 34: 11.5298608Z, идентификатор операции: 07fbf539-0d44-4e5a-89d0-cd46838ee605, код ошибки: ConnectFailed [0x0005], базовая ошибка: ошибка сокета ConnectionRefused [0x0000274D] ... --- Конец внутренней трассировки стека исключений ---

Ответы [ 2 ]

3 голосов
/ 21 февраля 2020

TransportException: произошла ошибка транспорта клиента: не удалось подключиться к удаленной конечной точке. (Время: 2020-02-21T16: 34: 11.5298608Z, идентификатор операции: 07fbf539-0d44-4e5a-89d0-cd46838ee605, код ошибки: ConnectFailed [0x0005], базовая ошибка: ошибка сокета ConnectionRefused

Это означает, что в соединении было отказано.

  • Либо в вашей учетной записи Cosmos DB включен брандмауэр / VPN, и приложение не может установить sh соединение из-за отсутствия в белом списке IP / сети : Попробуйте проверить конфигурацию вашей учетной записи.
  • Среда, в которой выполняется код, ограничивает соединения (некоторые корпоративные брандмауэры или сети могут блокировать диапазоны портов): Попробуйте запустить приложение в другой сети или используйте GatewayMode . Если это работает, то это относится к сети.
  • Возможно, на машине не хватает сокетов или слишком много ресурсов ЦП.
1 голос
/ 25 марта 2020

Я столкнулся с той же проблемой.

Что сработало для меня, изменилось ConnectionMode на ConnectionMode.Gateway при инициализации CosmosClient, например:

var options = new CosmosClientOptions() { ConnectionMode = ConnectionMode.Gateway };
var client = new CosmosClient(endpoint, key, options); 

Для получения дополнительной информации см.:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.cosmosclientoptions?view=azure-dotnet

https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.connectionmode?view=azure-dotnet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...