我明白,自從將asp.net應用程序移植到asp.net核心2.0後,我可能會發生此錯誤(主要是因爲有關加載速度的優化頁面),但我會問這個問題。在等待結果時在asp.net核心2.0中調用wcf aync服務
因此,當我僅提取數據時,我的查詢工作正常,但是,爲了在客戶端上下載數據庫,必須從數據庫獲取文件路徑時遇到問題。由於我不需要文件的整個模型,我在客戶端有3個字段,我填寫了有關文件(etc位置,大小,文件名)的信息,問題是當我向異步請求發送Azure上的WCF服務持有我的實體框架鏈接到數據庫,代碼繼續進行下去,無需等待從數據庫中檢索數據,並在嘗試填充要發送到客戶端的dto對象時拋出空引用異常爲了取回被標記爲下載
文件這是在客戶端
internal async Task<AnimalDocument> GetAnimalDocument(int id)
{
var data = await _context.GetAnimalDocumentAsync(id);
var result = JsonConvert.DeserializeObject<AnimalDocument>(data);
return result;
}
我的數據訪問而這正是我得到空例外
public SeriliazedFile GetFile(int id, int type)
{
var result = new SeriliazedFile();
if (type == 1)
{
var data = _context.GetHumanFile(id);
result.FileName = data.Result.DocumentName;
result.FilePath = data.Result.DocumentLocation;
result.FileSize = data.Result.FileSize.Value;
}
else if (type == 2)
{
var data = _context.GetAnimalDocument(id);
result.FileName = data.Result.DocumentName;
result.FilePath = data.Result.DocumentLocation;
result.FileSize = data.Result.FileSize.Value;
}
return result;
}
有沒有辦法強制異步請求在返回從WCF檢索的任務之前等待結果?我試着告訴_context.GetAnimalDocument(id).Wait();然而,沒有任何反應,它仍然繼續進行,沒有任何結果。我注意到,檢索數據的觸發器在向頁面發送的ajax請求返回200之後觸發,導致類似死鎖的情況,但我可能是錯誤的。如果任何人都可以給我一個解決方法,那就太好了,我很確定我最終會自己想出來,但是無論如何,時間很少,我希望你有一個美好的一天。