1
我在Azure上創建了一個documentDB,並且可以成功創建並獲取文檔。無法使用Async DocumentDB操作的結果CreateDocumentAsync
但是,雖然在數據庫中成功創建了文檔,但我無法使用CreateDocumentAsync的響應。代碼立即返回到控制器上的調用方法。所以調試線從來沒有達到。
而且我的ID設置爲GUID,但返回到控制器的文件有1
控制器的標識
[HttpPost]
[Route("")]
public IHttpActionResult CreateNewApplication(dynamic data)
{
if (data == null)
{
return BadRequest("data was empty");
}
try
{
var doc = _applicationResource.Save(data);
return Ok(doc.Id); //code hits this point and 'returns'
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
資源
public async Task<Document> Save(dynamic application)
{
Document created;
using (Client)
{
application.id = Guid.NewGuid();
var database = await RetrieveOrCreateDatabaseAsync(Database);
var collection = await RetrieveOrCreateCollectionAsync(database.SelfLink, CollectionName);
//persist the documents in DocumentDB
created = await Client.CreateDocumentAsync(collection.SelfLink, application);
}
Debug.WriteLine("Application saved with ID {0} resourceId {1}", created.Id, created.ResourceId);
return created;
}
獲取請求按預期返回數據:
[HttpGet]
[Route("{id}")]
public IHttpActionResult GetApplication(string id)
{
var application = _applicationResource.GetById(id);
return Ok(application);
}
嗨,是的,修正它。感謝您的快速響應。事情是,我沒有任何我的get方法異步查詢數據庫,他們都按預期返回。任何想法爲什麼差異?請參閱編輯問題。 – Kildareflare
你的'GetById'方法是異步的嗎?如果是這樣,它會返回一個'任務',而不是'T'。似乎不太可能它應該正常工作。 –
@YuvalItzchakov,我推測'Document'類具有'Guid'類型的'Id'屬性。或者它甚至不會編譯。 –