У меня есть два метода: один в WebApi (Post()) и один в моем репо репозитории (Save()). Внутри метода Save я вызываю метод async с ожиданием. Сам метод Save is async.Вызов метода async в методе WebApi
Что я в конце концов хочу сделать, так это то, что после завершения функции в методе сохранения отправить 201 пользователю.
Web API:
public HttpResponseMessage Post(JObject input)
{
Event postedEvent = new Event(// here be data //);
IEventRepo repo = new MongoDBRepo();
return repo.Save(postedEvent).Result;
}
репо Данные:
public async Task<HttpResponseMessage> Save(Event e)
{
await _collection.InsertOneAsync(e);
return new HttpResponseMessage(HttpStatusCode.Created);
}
Что происходит сейчас в том, что Сохранить будет сделано, но HttpResponseMessage никогда не будет отправлен. Таким образом, запрос на сервер будет зависать.
Используйте async во время использования, иначе вы попадаете в тупик. Прочтите это: http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html –