2017-02-18 63 views
0

錯誤CS1061「任務>」的定義不包含定義爲 「FirstOrDefault」和沒有擴展方法「FirstOrDefault」接受類型的 第一個參數「任務>」能找到(你 缺少using指令或程序集引用?),任務不包含關於「FirstOrDefault」

使得與Facebook控制器Web應用程序中,包括使用System.Linq的,但仍然得到錯誤FirstOrDefault()。 我不知道問題是什麼,我重新安裝了視覺工作室,因爲他同樣的東西適用於我的朋友筆記本電腦。 我玩弄四周,看看如果該方法是目前在圖書館和它的存在,但仍然沒有得到過去的這個Image for the same

public async Task<ActionResult> Posts() 
{ 
    var currentClaims = UserManager.GetClaimsAsync(HttpContext.Identity.GetUserId()); 

    // Error occurs here at FirstOrDefault 
    var accesstoken = currentClaims.FirstOrDefault(x = > x.Type == "urn:tokens:facebook"); 

    if (accesstoken == null) 
    ... 
} 
+0

currentClaims變量的類型是什麼?要使用FirstOrDefault,該類型必須是IEnumerable。 –

回答

10

您在UserManager.GetClaimsAsync()前缺少await

var currentClaims = await UserManager.GetClaimsAsync(...); 
2

看密切關注錯誤消息。 GetClaimsAsync返回類型Task<IList<Claim>>,而不是類型列表。任務類型沒有FirstOrDefault方法。正如其他人已經表示,等待GetClaimsAsync,它會工作。

作爲一個附註,做不是在這裏使用.Result因爲這樣會在大多數環境中死鎖。請參閱this article以解釋爲何會出現死鎖,以及this article關於異步/等待最佳做法。