2009-11-12 110 views
0

我正在为我们的Web应用程序编写一个安装应用程序。其中一项任务是为内置的SqlRoleProvider设置数据库。我的脚本使用aspnet_regsql.exe命令创建数据库,但现在我遇到了以编程方式创建默认角色和用户映射的麻烦。从控制台应用程序以编程方式设置角色

我想做什么:

... 
private class UserRole 
{ 
    public string Username { get; set; } 
    public string Role { get; set; } 
} 
... 

const string applicationName = "foo"; 
var roles = new List<string> { "Administrator", "Editor" }; 
var userRoles = 
    new List<UserRole> 
     { 
      new UserRole {Username = "joli", Role = "Administrator"}, 
      new UserRole {Username = "test", Role = "Editor"} 
     }; 

Roles.ApplicationName = applicationName; 
foreach (var userRole in userRoles) 
{ 
    Roles.AddUserToRole(userRole.Username, userRole.Role); 
} 
... 

的问题是,这个运行时,我得到一个异常说“的rolemanager未激活”,因为通常角色仅这当然是正确的从Web应用程序处理。

我对此做了一个解决方法,直接执行内置的存储过程,但我很好奇如何以编程方式解决这个问题。

回答

1

不应该是一个app.config文件吗?

+0

你会在app.config中放什么?通常,提供程序驻留在web.config的system.web部分中。 – 2009-11-16 15:24:54

+1

试试这个http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm 只需在app.config中添加membershipprovider,就像在web.config中的web应用程序中所做的那样。 – nWorx 2009-11-16 16:25:06

+0

非常好。这解决了它。我不知道控制台应用程序关心的是system.web-config部分,但事实证明这很容易。 – 2009-11-17 14:30:53

0

好像你还没有正确地在你的web.config中配置你的Membership-provider。你可以发布提供商所在的配置部分吗?

相关问题