Невозможно поймать CosmosException при истечении срока действия токена в Blazor WebAssembly

Я использую Azure CosmosDB с Blazor WebAssembly (на стороне клиента).

Я хочу поймать CosmosException по истечении срока действия токена подключения, но не получить для этого исключение космоса (обнаружено нулевое исключение)

Я также пробовал тот же код в консольном приложении, в котором я могу поймать исключение космоса, показывающее, что токен истек.

Пример кода:

        using (CosmosClient client = new CosmosClient(account, token))
        {
            Database db = null;
            db = client.GetDatabase("databaseName");
            Container orgContainer = client.GetContainer("databaseName","containerName");
            
            try
            {
                ItemResponse<CosmosException> response = await orgContainer.ReadItemAsync<CosmosException>("test", new PartitionKey("test"));
                var data = response.Resource;
            }
            catch(CosmosException ex)
            {
                
            }
            catch(Exception ex)
            {

            }
       }

Сведения об исключении консольного приложения


person Umang    schedule 11.07.2020    source источник
comment
Итак, вы разместили код, который работает правильно.   -  person Henk Holterman    schedule 11.07.2020
comment
@HenkHolterman Да, этот код работает правильно, показывает исключение космоса в консольном приложении, но не в сети Blazor.   -  person Umang    schedule 12.07.2020


Ответы (1)


Вероятно, это связано с тем, что исключение возникает вне блока try. Кроме того, убедитесь, что вы не создаете экземпляр нового клиента cosmos при каждом запросе. Это не работает. Используйте синглтон и сохраняйте активность между запросами.

person Mark Brown    schedule 11.07.2020
comment
Исключение происходит в блоке попытки в [ItemResponse ‹CosmosException› response = await orgContainer.ReadItemAsync ‹CosmosException› (test, new PartitionKey (test));] ................... ............................. Да, клиентское соединение создается только один раз, - person Umang; 12.07.2020
comment
Итак, вы получили 403 в объекте ответа, но не исключение? - person Mark Brown; 12.07.2020
comment
403 отображается в браузере (осмотреть - ›сеть), но в блоке catch отсутствует исключение. - person Umang; 13.07.2020