首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义角色提供程序不实现继承的抽象成员

自定义角色提供程序不实现继承的抽象成员
EN

Stack Overflow用户
提问于 2009-12-10 02:24:54
回答 2查看 3.3K关注 0票数 3

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

问题是我收到了几个错误,比如:

代码语言:javascript
运行
复制
MyRoleProvider does not implement inherited abstract member 'System.Web.Security.RoleProvider.RoleExists(string)

对于其他方法,我得到了相同的错误。但是,我确实有针对这些的实现。

我的web.config是这样的:

代码语言:javascript
运行
复制
<roleManager enabled="true" defaultProvider="MyCustomProvider">
  <providers>
     <add name="MyCustomProvider" type="MyRoleProvider" />
  </providers>
</roleManager>

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

代码语言:javascript
运行
复制
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;
        }
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-10 02:45:29

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

代码语言:javascript
运行
复制
throw new NotImplementedException();

您可能知道,从抽象类继承时,必须实现该类的所有抽象成员,比如RoleProvider类。Visual studio选择何时重写成员,默认情况下填充上述代码。保持原样将允许您的项目构建,因为它已经实现,但在运行时,您会得到异常,因为.net框架将调用抛出异常的一些方法。

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

票数 4
EN

Stack Overflow用户

发布于 2009-12-10 02:29:15

您在RoleExists方法中抛出了一个NotImplementedException。暂时将其更改为return true;,一切都会好起来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1875816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档