Погружаясь в CosmosDB и asybc, я столкнулся с небольшой проблемой. Я создаю вызов веб-службы для удаления документа CosmosDB, но обработка исключений работает немного, я полагаю, это связано с природой асинхронного вызова. По сути, исключение не передается на контроллер, а выполнение перепрыгивает, в результате чего вызов выглядит успешным, когда он не выполняется.
Как я могу перехватить исключение, вызванное методом DeleteDocumentAsync, чтобы я мог вернутьсоответствующая ошибка вызывающему клиенту?
Спасибо всем заранее!
Код контроллера:
[HttpDelete]
public ActionResult Delete(Guid key)
{
ActionResult result;
try
{
result = StatusCode(StatusCodes.Status200OK);
_repository.Delete<CodeKeyPairModel>(codeKeyPair);
return result;
}
catch (Exception ex)
{
_logger.LogError(ex, "Fatal error deleting record key", ex);
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
</code>
Код репозитория
public async void Delete<T>(T codeKeyPairModel) where T : CodeKeyPairModel
{
var documentLink = UriFactory.CreateDocumentUri(cosmosDBId, collectionId, codeKeyPairModel.Id.ToString());
var result = await cosmosDBClient.DeleteDocumentAsync(documentLink,
new RequestOptions() { PartitionKey = new PartitionKey(Undefined.Value) });
}