注意:此类在 .NET Framework 2.0 版中是新增的。
对 ASP.NET 应用程序的角色成员资格信息在 SQL Server 数据库中的存储进行管理。
命名空间:System.Web.Security
程序集:System.Web(在 system.web.dll 中)
![语法](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
Public Class SqlRoleProvider Inherits RoleProvider
Dim instance As SqlRoleProvider
public class SqlRoleProvider : RoleProvider
public ref class SqlRoleProvider : public RoleProvider
public class SqlRoleProvider extends RoleProvider
public class SqlRoleProvider extends RoleProvider
![备注](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
此类由 Roles 和 RolePrincipal 类使用,用于为使用 SQL Server 数据库的 ASP.NET 应用程序提供角色管理服务。可以使用角色管理为应用程序指定不同的授权级别。
要使用 SqlRoleProvider 类,您必须首先创建 SqlRoleProvider 使用的 SQL Server 数据库。要创建 SqlRoleProvider 类使用的数据库,请运行 aspnet_regsql.exe 可执行文件(可在 C:/WINDOWS/Microsoft.NET/Framework/ versionNumber 文件夹中找到),并指定 -Ar 选项(例如 aspnet_regsql.exe -Ar)。所创建的数据库名为 Aspnetdb。或者,运行 Aspnet_regsql.exe 启动图形用户界面配置模式并选择配置所有 ASP.NET 功能。
如果使用指定了集成安全性的连接字符串对角色提供程序进行配置,则 ASP.NET 应用程序的进程帐户必须具有连接到 SQL Server 数据库的权限。
Machine.config 文件是利用名为 AspNetSqlProvider 的 SqlRoleProvider 实例配置的,该实例连接到本地计算机上的 SQL Server。您可以使用此提供程序实例,也可以在 ASP.NET 应用程序的 Web.config 文件中指定自己的实例。要使用 AspNetSqlProvider 实例,请在您的 roleManager 配置中将 AspNetSqlProvider 指定为 defaultProvider。
可以将 SqlRoleProvider 配置为与 SqlMembershipProvider 使用相同的数据库和用户信息,以便使用一个数据库即可获得身份验证和授权信息。如要使用同一个数据库获取成员资格和角色信息,请运行 aspnet_regsql.exe 可执行文件,然后安装成员资格功能。然后,在配置中为 SqlRoleProvider 和 SqlMembershipProvider 实例指定同样的连接字符串。另外,还要确保利用相同的 ApplicationName 来配置这两个提供程序实例。
![示例](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
下面的示例演示了配置为使用 SqlRoleProvider 对象和 SqlMembershipProvider 的 ASP.NET 应用程序的 Web.config 文件。authorization 元素配置为只允许经过身份验证且角色为 Administrators 的用户进行访问。
<configuration> <connectionStrings> <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=aspnetdb;" /> </connectionStrings> <system.web> <authentication mode="Forms" > <forms loginUrl="logincs.aspx" name=".ASPXFORMSAUTH" /> </authentication> <authorization> <deny users="?" /> <allow roles="Administrators" /> <deny users="*" /> </authorization> <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15"> <providers> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlServices" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Hashed" applicationName="SampleApplication" /> </providers> </membership> <roleManager defaultProvider="SqlProvider" enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="true" cookieSlidingExpiration="true" cookieProtection="All" > <providers> <add name="SqlProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="SqlServices" applicationName="SampleApplication" /> </providers> </roleManager> </system.web> </configuration>
![.NET Framework 安全性](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
- AspNetHostingPermission 用于在宿主环境中使用 SqlRoleProvider 类。要求值:LinkDemand。权限值:Minimal。
![继承层次结构](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
System.Configuration.Provider.ProviderBase
System.Web.Security.RoleProvider
System.Web.Security.SqlRoleProvider
![线程安全](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
![平台](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
![版本信息](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)
.NET Framework
受以下版本支持:2.0![请参见](https://i-blog.csdnimg.cn/blog_migrate/824674f6b2f99367c341175f68d5f007.png)