2010-11-21 128 views
3

我想從所有表中刪除一個asp.net用戶。
當我打電話:membership.deleteuser()返回false

bool isDeleted = Membership.DeleteUser(username, true); 

isDeleted被設置爲false;

有沒有辦法說明它爲什麼不刪除用戶?

回答

1

在該行代碼上放置一個斷點,然後按F8以調試模式進入。

+1

+1因爲唯一合乎邏輯的事情就是調試。 – 2010-11-21 03:56:46

+0

您無法步入Membership.DeleteUser方法。 – DahlinDev 2010-11-21 19:36:57

+0

當斷點遇到時,請檢查用戶名變量的值以確保它不是您的代碼。如果您使用有效的用戶名發送郵件,則必須聯繫該成員資格類的提供商,以瞭解其爲什麼不起作用。我們沒有足夠的信息去做任何事情,只是猜測現在有什麼不對。 – N0Alias 2010-11-22 00:05:47

0

用戶名可能是錯的 - 或者名稱與數據庫中的名稱不匹配,或者用戶不在數據庫中。

但是,ApplicationName可能是錯誤的,或者您可能會錯誤地指向錯誤的成員資格數據庫。

我能看到的唯一的另一種可能性是您修改了aspnet_Users_DeleteUser sproc並將其破壞。

+0

格雷格 - 所有好東西要檢查和我檢查過的所有東西。我也沒有碰過這個問題。真的,我並沒有尋找一種解決方案來讓它在這裏工作,而且還在尋找是否有辦法獲得失敗的消息,以便我可以進行調試。 – DahlinDev 2010-11-22 14:09:27

+0

框架本身沒有太多要調試......這一切都在存儲過程中。我建議打開這個sproc並測試它,並分解它直到找出問題。在未報告的sproc期間可能發生錯誤。 ('@ TablesToDeleteFrom'設置爲15 btw) – Greg 2010-11-22 14:26:14

+0

我應該添加該方法的返回值計算爲「@NumTablesDeletedFrom> 0」 – Greg 2010-11-22 14:45:01

0

嘗試刪除提供者名稱,它通過發送用戶名只爲我工作。

我正在使用SharePoint 3.0與FBA,當用戶從SharePoint中刪除時,仍然可以在FBA數據庫中找到它。這就是爲什麼我使用這個功能如下:

bool deleteUserResult = Membership.DeleteUser(currentUserLogin,true); 如果拋出新的異常(」 ...)(deleteUserResult!);

希望這有助於 達明

1

不幸的是,看起來,當你刪除會員用戶喜歡,甚至deleteAllRelatedData =真

Membership.DeleteUser(UserName.Text, true);

用戶是NOT從dbo.aspnet_Users表中刪除,這意味着第在用戶不能再重新註冊相同的名稱(即使他們將會有不同的GUID)

我明白這是意向行爲,雖然它對我來說沒有意義。

但是,下面的程序將在ASPNET數據庫

CREATE PROCEDURE [dbo].[ASPNET_Member_DELETE_By_Name] 
    @UserNameToDelete nvarchar(255) 
    AS 
    BEGIN 

    DECLARE @UserToDelete nvarchar(255) 

    SELECT @UserToDelete = UserID 
    FROM aspnet_Users WHERE UserName = @UserNameToDelete) 

    DELETE FROM aspnet_Profile WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_UsersInRoles WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_PersonalizationPerUser WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_Membership WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_Users WHERE UserID = @UserToDelete 

    END 

但是刪除所有的痕跡,如果你正在使用ASPNET成員跨多個應用程序(如我)使用相同的數據庫這有一定的侷限性 - 你可能有相同的用戶使用相同的用戶名登錄到多個應用程序的情況。

對於此場景,您需要傳遞應用程序名稱並在執行刪除之前確定用戶的應用程序ID。

我第一次在這裏發佈,所以要溫柔......

2

我發現另一個原因是,用戶無法刪除:
如果你改變它也發生(在aspnet_Users)的UserName但不是LoweredUserName相應。
至少這是發生在我身上的事情:
儘快我改變了LoweredUserName我終於可以刪除用戶了。