Как получить имя ресурса в ResourceNotFoundException из AWSSDK.DynamoDBv2
Я работаю с ServiceStack.Aws и получаю ResourceNotFoundException, но не могу увидеть имя ресурса, которое он ищет. Name Имя ресурса отправлено в исключении? ¿Как я могу получить это?
Моя модель класса (таблица и имя индекса существует)
[DynamoDBTable("SOME-TABLE-NAME")]
public class Company
{
[DynamoDBHashKey]
public string CompanyId { get; set; }
[DynamoDBGlobalSecondaryIndexHashKey("SOME-INDEX-NAME")]
public string ShortName { get; set; }
public string DocumentNumber { get; set; }
public string FullName { get; set; }
public string Address { get; set; }
public DateTime CreatedAt { get; set; }
}
Мой код
var awsDb = new AmazonDynamoDBClient();
var db = new PocoDynamo(awsDb);
db.RegisterTable<Company>();
try
{
db.PutItem<Company>(new Company
{
Address = "Some address #some number",
CompanyId = Guid.NewGuid().ToString(),
CreatedAt = DateTime.Now,
DocumentNumber = "11.222.333-4",
FullName = "Some company name",
ShortName = "ShortName"
});
}
catch (ResourceNotFoundException ex)
{
}
catch (Exception ex)
{
}
В моем app.config у меня есть (путь и имя профиля существует. Регион тоже хорошо)
<aws region="us-east-1" profileName="profile-name" profilesLocation="some-path\certificados.txt">
</aws>
Редактировать: проблема в том, что ServiceStack не использует атрибуты AWS. Итак, я меняю DynamoDBTable на Alias и все работает нормально
1 ответ
PocoDynamo ServiceStack.Aws автоматически повторяет временные исключения за кулисами, поэтому первоначальное исключение AWS могло быть повторено. Я только что добавил ExceptionFilter
в этом коммите, который позволит вам проверить каждое исключение, выданное клиентом AWS DynamoDB:
var dynamo = new PocoDynamo(awsDynamoClient) {
ExceptionFilter = ex => ex.Message.Print();
};
ExceptionFilter доступен с v4.0.61, который теперь доступен на MyGet.
Также [DynamoDBGlobalSecondaryIndexHashKey]
Атрибут не влияет на PocoDynamo, пожалуйста, смотрите документацию по созданию глобальных индексов с PocoDynamo.