2015-09-15 74 views
0

我試圖建立一個「密碼重置」功能找到該數據的DbContext。爲此,我在用戶請求重置密碼並將其作爲電子郵件發送時生成一個guid,並將其鏈接到密碼重置頁面,該頁面以guid作爲查詢字符串。 我寫的代碼如下:不能使用LINQ

Request.QueryString[BusinessLayerConstants.resetPasswordQueryString]) ? Request.QueryString[BusinessLayerConstants.resetPasswordQueryString] : String.Empty; 
    passwordCode = System.Web.HttpUtility.UrlDecode(passwordCode); 

    using (DBEntities entities = new DBEntities()) 

    { 

    User = entities.AspNetUsers.FirstOrDefault(u => u.PasswordReset == passwordCode); 

    if (User != null) 
    { 
     //TODO 
    } 
} 

的問題是,LINQ始終返回null。如果我使用相同的GUID在數據庫中運行SQL命令,我可以看到數據。並且passwordCode變量也獲得了正確的值。我甚至檢查過passwordCode是否有一些隱藏的字符,因爲它來自查詢字符串;但它也很好。

我也使用此相同的邏輯激活爲好。我傳遞一個GUID作爲查詢字符串,並進行激活,我可以用下面的代碼查找數據:

AspNetUser user = entities.AspNetUsers.FirstOrDefault(u => u.ActivationCode == activationCode); 

它不輸入密碼的工作,我也用.Equals().Contains()與嘗試沒有運氣。

如果任何人有任何想法可能是錯誤的,我希望得到任何幫助。謝謝。

編輯: PasswordReset只是一些GUID我產生傳遞作爲查詢字符串。 一切都很好,當我這樣做: Running some sql

但在代碼,代碼我已經空寫的回報: enter image description here

+1

什麼是'u.PasswordReset'?它可以被加密/散列,因此不同於'passwordCode'? – user1666620

+0

'PasswordReset'很可能不是你真實的想法。嘗試再次檢查該屬性的值以確保。 – Hopeless

+0

@ user1666620它沒有加密,它是我自己產生的guid。@絕望,我認爲它是什麼,因爲我能夠在db中看到它。如果我做這樣的事情:SELECT FROM [AspNetUsers]其中PasswordReset像「cf8d0488-1f60-4ab0-9801-035fbc6bc58873eea9b1-e557-4744-82a5-2b152ea67db0」,然後我能找到的數據。 – biseibutsu

回答

0

記住,C#是大小寫敏感的,你應該做的,如:

Request.QueryString[BusinessLayerConstants.resetPasswordQueryString]) ? Request.QueryString[BusinessLayerConstants.resetPasswordQueryString] : String.Empty; 
    passwordCode = System.Web.HttpUtility.UrlDecode(passwordCode); 

    using (DBEntities entities = new DBEntities()) 

    { 

    User = entities.AspNetUsers.FirstOrDefault(u => u.PasswordReset.ToLower() == passwordCode.ToLower()); 

    if (User != null) 
    { 
     //TODO 
    } 
} 
+0

不,一切都已經小寫了;但我仍然嘗試過,它沒有奏效。 – biseibutsu

+0

這是完全不相關的個​​人信息,請問您是否是土耳其人?我在翻譯我的網站時遇到問題,需要幫助。看到你的鏈接鏈接我以爲你可能是土耳其語 –

+0

使用斷點檢查,如果'passwordCode'具有所需的值,當它比較的時候 –