У меня есть то, что я считаю довольно простым потоком в асинхронном контроллере веб-API.Код выглядит следующим образом:
public async Task<IHttpActionResult> Put([FromBody] ObjectType myObject)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
try
{
this.callbasicMethod();
myObject = await myRepository.UpdateDB(myObject);
await myRepository.DeleteSomeStuff(myObject.someProperty);
var table = Helper.CreateDataTable(myObject.anotherProperty);
await myRepository.InsertSomeStuff(table);
returnOk(myObject);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
Проблема в том, что ни один из вызовов базы данных (важно, вызов обновления) никогда не выполняется.Если я ставлю точку останова в этом методе вокруг вызова обновления, все работает просто отлично.Это похоже на какое-то состояние гонки или что-то подобное.Пожалуйста, дайте мне знать, если у вас есть идея, как решить эту проблему или что я делаю неправильно.
Кроме того, пожалуйста, дайте мне знать, если вам нужны какие-либо разъяснения, мне пришлось явно запутывать код, чтобы защитить интеллектуальную собственность компании, в которой я работаю.Если это помогает, вызываемые методы сами внедряются асинхронно, вызывая асинхронные изящные методы для связи с базой данных.