c# - 自定义角色提供者不实现继承的抽象成员

标签 c# asp.net asp.net-mvc roleprovider

我需要一些帮助在 asp.net mvc 应用程序中实现自定义角色提供程序。

问题是我遇到了几个错误,例如:

MyRoleProvider does not implement inherited abstract member 'System.Web.Security.RoleProvider.RoleExists(string)

我用其他方法得到同样的错误。但是,我确实有这些实现...

我的 web.config 有这个:

<roleManager enabled="true" defaultProvider="MyCustomProvider">
  <providers>
     <add name="MyCustomProvider" type="MyRoleProvider" />
  </providers>
</roleManager>

我的自定义角色提供者是这样的(我省略了一些方法):

public class MyRoleProvider : RoleProvider {
        public override string ApplicationName {
                get { throw new NotImplementedException(); }
                set { throw new NotImplementedException(); }
        }
        public override bool RoleExists(string roleName)
        {
                throw new NotImplementedException();
        }
        public override bool IsUserInRole(string username, string roleName)
                return true;
        }
}

我做错了什么? (我对此很陌生)。

最佳答案

当您创建自定义提供程序时,尤其是在 Visual Studio 下,Intellisense 将使用以下内容填充覆盖成员的内容:

throw new NotImplementedException();

您可能知道,当从抽象类(例如 RoleProvider 类)继承时,必须实现该类的所有抽象成员。 Visual Studio 选择何时覆盖成员,默认填写以上代码。保持原样将允许您的项目构建,因为它已经实现,但在运行时您会遇到异常,因为 .net 框架将调用一些引发异常的方法。

您需要做的是删除 throw 语句并实现该方法或属性的逻辑。因此,对于 IsUserInRole 方法,您将检查您正在使用的任何用户存储(SQL 数据库、XML 文件等),如果用户在某个角色中则返回 true,否则返回 false。

关于c# - 自定义角色提供者不实现继承的抽象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1875816/

相关文章:

c# - 访问项目模板中的文本框

c# - 如何制作透明的tabPage?

asp.net-mvc - 寻找 ModelState.IsValid 错误

c# - 使用 Process.kill 异常终止进程后读取 StdOut

c# - 如何在不降低 C# 质量的情况下调整 Gif 的大小

asp.net - 如何在详细空间的 Telerik 报告的文本框中传递参数值

.net - 我的 ASP.NET session 太大了吗?

c# - 将 JavaScript 值分配给 C# 变量

javascript - 创建包含 List 对象的 JSON 字符串

c# - MVC 在 C# 中连接多个 2 个表并根据结果填充列表