在我的asp.net應用程序管理功能,我試圖結合AD身份驗證和表單授權來創建用戶,角色和分配用戶角色等我已配置MembershipADProvider和AspNetSqlMembershipProvider與我的web.config中的MembershipADProvider作爲默認值。用戶使用AD身份驗證登錄後,我需要切換/分配我的成員資格對象才能使用AspNetSqlMembershipProvider,以便從成員資格對象(從dbo.aspnet_Users表中)獲取所有用戶。如何在運行時切換提供程序?在尋找這個問題之後,我嘗試了不同的方法,但迄今爲止,這些方法都不適用於我。 這裏有幾個方法我嘗試: 1.的foreach(在Membership.Providers的MembershipProvider MP) { 如果(mp.Name == 「MembershipADProvider」) { Membership.Providers.Remove(MembershipADProvider「);
MembershipUserCollection用戶= Membership.GetAllUsers(); ddlUsers.DataSource =用戶; ddlUsers.DataBind();
斷裂; } }從AD成員資格提供程序切換到SQL成員資格提供程序
Membership.Providers.Remove(MembershipADProvider「); - 不起作用,因爲它不被支持。 此外,試圖清除Membership.Providers,然後添加只有類型的AspNetSqlMembershipProvider也不支持。
我無法與從 Membership.Providers [ 「AspNetSqlMembershipProvider」]值設置Membership.Provider作爲Membership.Provider是一個只讀屬性。
我試圖打開2個提供程序之間的連接字符串,它沒有提供提供程序,因爲它們都是不同類型的提供程序..如果兩個提供程序都是sqlserver提供程序,我相信這樣做會起作用。
請讓我知道,如果任何人已成功實施,或者如果這是一個似是而非的方法。謝謝!
感謝您的迴應,TheCodeKing!這種方法看起來更清潔,一旦工作。我曾嘗試過提到一個特定的提供者(在類中,而不是服務方法),就像 - Membership.Providers [「ASPNetSqlRoleProvider」]。GetAllUsers() - 但Provider.GetAllUsers()需要參數,如int pageIndex,int pageSize, out int totalRecords。 Membership.GetAllUsers()調用沒有參數的基函數。我嘗試傳遞參數像Provider.GetAllUsers(1,1,出val),但它沒有奏效。對此有何想法? –
如果你看反射器'Membership.GetAllUsers()'只是調用'Membership.GetAllUsers(0,2147483647,out num)'。出於性能考慮,嘗試加載所有用戶可能不是一個好主意。最好查看結果。 – TheCodeKing
我沒有在反射器中查看成員資格對象的GetAllUsers(),並且確實調用了Membership.GetAllUsers(0,2147483647,out num)。這並沒有讓我用確切的代碼打電話。現在,在您再次指出我嘗試使用users = Membership.Providers [「AspNetSqlMembershipProvider」]。GetAllUsers(0,2147483647,out val);它的工作!這可以用參數調用(0,2147483647,out val)嗎?但是,這確實有用!謝謝! –