我有兩個方法,一個在WebApi(Post())和一個在我的數據倉庫(Save())中。在Save方法中,我使用await調用一個異步方法。 Save方法本身是異步的。在WebApi方法中調用異步方法
我到底想要完成的是在Save方法中的函數完成後向用戶發送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永遠不會發送。所以對服務器的請求將掛起。
當你使用它時,一路使用異步,否則你會陷入僵局。閱讀此:http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html –