gpt4 book ai didi

.net - 自定义角色提供者的问题

转载 作者:行者123 更新时间:2023-12-05 01:31:25 25 4
gpt4 key购买 nike

此堆栈跟踪是由于读取“提供程序名称不能为 null 或空。"

[ArgumentException:提供者名称不能为 null 或为空。] System.Web.Security.Roles.Initialize() +2230205 System.Web.Security.RoleManagerModule.OnLeave(对象源,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
}

在这一点上,我希望能够通过对 prov 进行调用来使用基类“RoleProvider”定义的任何内容。 ...

我省略了额外的代码,但基本上所有方法都被标记为“C20RoleProvider”类中 RoleProvider 类的抽象方法。

我知道它看起来有点奇怪,但我想做的是将业务逻辑与提供者中的数据获取分开,数据提供者是任何东西(通过我的反射代码),业务逻辑类“C20RoleProvider”可以用于业务框架无需担心破坏任何东西并允许替换后端源(例如,角色数据可以来自任何地方)。

这里还有很多事情要做,但本质上整个应用程序框架/业务对象层都以这种方式使用提供者从任何来源向核心业务逻辑“提供”数据。

最佳答案

好吧,我做了一些挖掘......事实证明我没有传回实际上没有在任何地方引用的“名称”属性......

修复是这样的......

public class C20RoleProvider : RoleProvider 
{
private C20SqlRoleDataProvider prov;

public string Name
{
get {return prov.Name;}
}

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);
}
}

奇怪的是,这似乎在网络上的任何地方都不为人所知。

关于.net - 自定义角色提供者的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com