2012-12-30 61 views
2

對於我在使用WebSecurity時遇到的所有奇怪異常感到有點失望。此外,與OAuth的差融合並沒有使它看起來更漂亮。考慮放棄概念並手動編寫整個用戶管理...WebSecurity SimpleMembershipProvider不能一起工作?

無論如何,我正在使用WebSecurity管理用戶和密碼。現在我嘗試實現可以​​刪除帳戶的部分。奇怪的是,這個方法不在靜態類WebSecurity上。顯然我需要通過SimpleMembershipProvider刪除賬戶。

var provider = new SimpleMembershipProvider(); 
provider.DeleteAccount(username); 

的deleteAccount方法拋出以下消息InvalidOperation異常:

You must call the "WebSecurity.InitializeDatabaseConnection" method before you call 
any other method of the "WebSecurity" class. This call should be placed in an 
_AppStart.cshtml file in the root of your site. 

嗯,這很奇怪,因爲我已經有這個在我_ViewStart(否則我不會已經能夠創建帳戶首先)。

 if (!WebSecurity.Initialized) 
     { 
      WebSecurity.InitializeDatabaseConnection(
       "DefaultConnection", 
       "Users", 
       "UserId", 
       "UserName", 
       true); 
     } 

這次我做錯了什麼?

回答

3

你試過:

Membership.DeleteUser(username); 
+0

我猜你贏得你的徽章是有原因的:)。這樣可行!你能否介紹一下這個壽命?何時使用SimpleMembershipProvider?當我將自定義數據庫定義爲用戶帳戶存儲時? – bas

+3

在ASP.NET MVC 4中,默認的成員資格提供者是'SimpleMembershipProvider'。所以,當你使用'Membership'類時,你已經在使用它了。您不需要使用成員資格提供程序特定的調用來污染代碼,例如實例化一個新的SimpleMembershipProvider,然後調用它。您的代碼不起作用,因爲您從未初始化您創建的SimpleMembershipProvider的新實例。 –

+0

thx很多澄清達林! – bas