我需要一些帮助来实现一个自定义的角色提供程序在asp.net应用程序。
问题是我收到了几个错误,比如:
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;
}
}我做错了什么?(我对此非常陌生)。
发布于 2009-12-10 02:45:29
当您创建自定义提供程序时,尤其是在Visual studio下,Intellisense将使用以下内容填充重写成员的内容:
throw new NotImplementedException();您可能知道,从抽象类继承时,必须实现该类的所有抽象成员,比如RoleProvider类。Visual studio选择何时重写成员,默认情况下填充上述代码。保持原样将允许您的项目构建,因为它已经实现,但在运行时,您会得到异常,因为.net框架将调用抛出异常的一些方法。
您需要做的是删除throw语句并实现该方法或属性的逻辑。因此,对于IsUserInRole方法,您将检查您正在使用任何用户存储(SQL数据库、XML文件等)。如果用户属于某个角色,则返回true,否则返回false。
发布于 2009-12-10 02:29:15
您在RoleExists方法中抛出了一个NotImplementedException。暂时将其更改为return true;,一切都会好起来的。
https://stackoverflow.com/questions/1875816
复制相似问题