В моем C приложении # Я инициализация CloudTable
экземпляра с помощью следующего кода:Как игнорировать ресурсы хранилища таблиц не найдены исключения без использования контекстов таблицы?
var account = CloudStorageAccount.Parse(connectionString);
var client = account.CreateCloudTableClient();
client.DefaultRequestOptions.RetryPolicy = new LinearRetry();
var table = client.GetTableReference(tableName);
table.CreateIfNotExists();
return table;
Когда я выполнить операцию, чтобы получить запись из хранилища таблиц, я обычно делаю что-то вроде:
var realEntity = _table.Value.ExecuteQuery(StreamKeyConfigurationEntity.CreateQuery(calculatedPartitionKey, calculatedRowKey))
.SingleOrDefault();
После того, как это было в производстве некоторое время, я заметил около 404 исключений, возвращающихся с этой линии. Оглядываясь по сторонам, кажется, что это нормальное поведение, когда в хранилище таблиц нет соответствующих объектов, что раздражает.
Хорошая новость, я наткнулся на несколько статей (например, this one, которые утверждают, что вы можете обойти эту проблему, установив IgnoreResourceNotFoundException
свойство true
.
Совершенных, за исключением того, что он использует TableContext
не CloudTable
. Это проблема становится intellisense явно говорит, что использовать пространство имен таблиц вместо пространства имен контекста, поскольку метод GetTableServiceContext()
помечается как устаревший.
Есть ли какой-либо способ обхода игнорировать ресурс, не найденные исключения, поэтому мне не нужно обертывать все запросы в try/catch с использованием CloudTable
материал?
Что не так с try/catch? – Jacobr365
Чтобы сделать это повсюду, добавьте шум и шаблон и, возможно, затмевайте другие 'StorageException', о которых мне может понадобиться знать. – KallDrexx
Достаточно честный. Полагаю, я никогда не думал о попытке поймать мой код. Также вы можете просто проверить сообщение об исключении, если это 404, который вам неинтересен, и если он другой, просто бросайте его снова. – Jacobr365