此堆棧跟蹤來作爲讀取「提供者名稱不能爲空值或空白 」。問題的自定義角色提供
錯誤的結果[ArgumentException的:提供程序名稱不能爲空值或空白] 系統。 Web.Security.Roles.Initialize()+2230205 System.Web.Security.RoleManagerModule.OnLeave(Object source,EventArgs eventArgs)+68 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean & completedSynchronously)+75
本質上,我創建了我自己的繼承SqlRoleProvider類的自定義角色提供程序,我調用了初始化成功並已確認它成功地執行了代碼中的所有操作,但.Net中的某些內容顯然沒有被初始化爲「角色」我無法繼承的對象正在令我頭痛......
有什麼想法嗎?
好我的解決方案是分層的,這意味着我需要通過業務對象層提供安全太...爲了做到這一點,我定義如下:
---編輯1 ---
我的代碼:
在主要部件:
public class C20RoleProvider : RoleProvider
{
private C20SqlRoleDataProvider prov;
C20RoleProvider()
{
// this code is actually using some reflection based on config files
// i have simplified this to illustrate the problem im having ...
prov = new C20SqlRoleDataProvider();
}
public override void Initialize(string name, NameValueCollection config)
{
prov.Initialize(name, config);
}
}
在供應商裝配:
public class C20SqlRoleDataProvider : SqlRoleProvider
{
// code omitted
}
在這一點上,我希望能夠使用基類「RoleProvider」通過在prov上調用來定義的任何內容。 ...
我已經省略了額外的代碼,但基本上所有的方法都標記爲類「C20RoleProvider」中的RoleProvider類的抽象。
我知道它看起來有點奇怪,但我想要做的是將業務邏輯與提供者中的數據獲取分開,數據提供者是任何事物(通過我的反射代碼)可以使用業務邏輯類「C20RoleProvider」在業務框架中,不用擔心破壞任何東西,並允許更換後端資源(例如角色數據可以來自任何地方)。
在這裏還有很多事情要做,但實質上整個應用程序框架/業務對象層都以這種方式使用提供程序從任何來源向核心業務邏輯「提供」數據。
你的代碼在哪裏? – willvv 2010-12-10 10:07:02
添加,對不起wilvv :)還有很多,但我不想通過添加不是問題的東西使我的問題複雜化。 – War 2010-12-10 12:14:49