爲什麼存儲在數據庫中的ASP.Net成員身份憑證不能在(1)Web應用程序和(2)計算機之間移植?ASP.Net會員證書是否可移植?
兩個場景 -
我們備份的生產數據庫,並將其恢復到開發服務器。即使底層數據從生產前幾秒鐘恢復,開發服務器上也沒有任何生產登錄憑據可用。
我們構建了一個新版本的應用程序(「v2」,讓我們稱之爲),並將其安裝在生產數據庫下的不同網站(旁邊的生產應用程序 - 「v1」),但與同一生產數據庫。即使它在與同一個數據庫交談,因此具有完全相同的成員資格數據,但該應用程序的第2版登錄憑證都不起作用,。
web.config文件中沒有機器密鑰。如果我放棄這一點,我認爲它會從machine.config文件中冒出來,這意味着它應該與每臺機器相同,這意味着兩個webapps在同一臺機器上與同一個數據庫進行交談(上面的第二個場景)應該共享憑據,對嗎?
我們還檢查了數據庫中的應用程序名稱和ID,它們在機器之間是相同的。
如果您重置密碼,一切工作正常(與新密碼)。但這意味着每個人都必須重置密碼,這並不理想。
似乎在某種程度上,密碼salt從數據庫服務器更改爲數據庫服務器,並從Web應用程序更改爲Web應用程序。
編輯:
使用ASP.Net 4.5和4.0 System.Web.Security.SqlMembershipProvider。
另一個編輯:
我已驗證了passwordFormat是 「散列」。另外,我已經檢查了兩個數據庫之間的Password和PasswordSalt字段。它們是相同的。
解決方案:
在web.config中的散列算法的兩個應用程序之間設置不同。
.Net 4.5。 System.Web.Security.SqlMembershipProvider,v4.0 – Deane
你可以編輯它到你的問題。這是相關的! – rene