【发布时间】:2013-08-25 20:28:42
【问题描述】:
我在我的 Web 项目中名为 providers 的文件夹中为自定义角色提供者创建了以下类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Project.Providers
{
public class MyCustomRoleProvider : System.Web.Security.SqlRoleProvider
{
public override string[] GetRolesForUser(string username)
{
string[] currentUserRoles = { "Admin", "User" };
return currentUserRoles;
}
}
}
我在 web.config 中添加了以下部分:
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="Project.Provider.MyCustomRoleProvider, MetaLearning"/>
</providers>
</roleManager>
当我尝试在我的家庭控制器上添加以下代码时:
Roles.AddUserToRole("username","role");
我收到角色管理器功能尚未启用的错误消息。我做错了什么?
【问题讨论】:
-
你有没有试过把
放在你的 标签之前,clear 元素用于清除之前为这个应用程序存储的所有提供者,例如默认提供者。 -
是的,我使用了 clear 元素,但这仍然告诉我角色管理器功能未启用
-
我已经尝试过你所做的同样的事情并且它有效,但我必须在提供程序添加中提供一个 connectionStringName 属性。只有当我注释掉完整的 roleManager 部分时,我才会得到同样的错误。你确定它在 system.web 标签中吗?你确定正在使用 web.config 吗?
-
您必须为提供者添加什么 connectionStringName?
-
当我省略 connectionStringName 时,我会在运行时收到配置错误,如果您不明白我的猜测是您的角色管理器配置部分根本没有被拾取......我的连接字符串名称案例是一个指向 aspnetdb 数据库的案例。您能否仔细检查或发布您的完整配置。
标签: asp.net-mvc-4 roles roleprovider