我已经使用ASP.NET WebForms通过Visual Studio 2017创建了一个网页。
我正在使用内置的用户管理并创建了一些用户。
现在我要使用角色功能。
首先我启用了角色管理器,但是随后出现一个新错误 “找不到存储过程'dbo.aspnet_CheckSchemaVersion”
我尝试使用aspnet_regsql.exe向数据库添加必要的部分,但是现在我的数据库中有两种表:AspNetUsers和aspnet_Users。
要使用旧的AspNet-Schematic启用角色,我该怎么做?
答案 0 :(得分:0)
您必须在web.config中配置默认角色提供程序/成员资格提供程序,并针对您的数据库运行aspnet_regsql.exe。
<system.web>
<roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="AspNetSqlRoleProvider">
<providers>
<clear />
<add applicationName="app-name" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="roleManagerSqlConnString" />
<add applicationName="app-name" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
</system.web>
using System.Web.Security;
string userName = HttpContext.Current.User.Identity.Name;
if (!Roles.IsUserInRole(roleName))
{
Roles.AddUserToRole(userName, roleName);
}
答案 1 :(得分:0)
使用Microsoft.AspNet.Identity使用VisualStudio创建的Standard-WebForms,因此也创建数据库以使用Microsoft.AspNet.Identity的示意图。
因此,您必须使用RoleManager来添加角色:
string roleName = "role";
var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
if (!roleManager.RoleExists(roleName))
{
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = TextBoxRole.Text;
roleManager.Create(roleName);
}
System.Web.Security具有其自己的原理图,不适用于Microsoft.AspNet.Identity