MySQL Connector/NET 包含一个提供程序模型,可用于 ASP.NET 应用程序。该模型使开发人员能够专注于应用程序的业务逻辑,而不是重新创建诸如成员资格和角色支持之类的样板项目。
Connector/NET 支持以下 Web 提供程序
成员资格提供程序
角色提供程序
配置文件提供程序
会话状态提供程序
下表显示了支持的提供程序、其默认提供程序以及相应的 MySQL 提供程序。
成员资格提供程序
默认提供程序 | System.Web.Security.SqlMembershipProvider |
---|---|
MySQL 提供程序 | MySql.Web.Security.MySQLMembershipProvider |
角色提供程序
默认提供程序 | System.Web.Security.SqlRoleProvider |
---|---|
MySQL 提供程序 | MySql.Web.Security.MySQLRoleProvider |
配置文件提供程序
默认提供程序 | System.Web.Profile.SqlProfileProvider |
---|---|
MySQL 提供程序 | MySql.Web.Profile.MySQLProfileProvider |
会话状态提供程序
默认提供程序 | System.Web.SessionState.InProcSessionStateStore |
---|---|
MySQL 提供程序 | MySql.Web.SessionState.MySqlSessionStateStore |
MySQL 会话状态提供程序使用的类名大小写与其他 MySQL 提供程序略有不同。
安装提供程序
安装 Connector/NET 会在您的计算机上安装提供程序并在 .NET 配置文件 (machine.config
) 中注册它们。这些附加条目将修改文件的 system.web
部分,安装后将类似于以下示例。
<system.web>
<processModel autoConfig="true" />
<httpHandlers />
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
<add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.1.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile>
<providers>
<add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.1.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</profile>
<roleManager>
<providers>
<add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.1.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</roleManager>
</system.web>
每种提供程序类型都可以有多个提供程序实现。默认提供程序也可以在此处使用 defaultProvider
属性进行设置,但通常是在 web.config
文件中手动设置或使用 ASP.NET 配置工具设置。
在撰写本文时,MySqlSessionStateStore
未在安装时添加到 machine.config
中,因此请添加以下内容
<sessionState>
<providers>
<add name="MySqlSessionStateStore" type="MySql.Web.SessionState.MySqlSessionStateStore, MySql.Web, Version=6.1.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</sessionState>
会话状态提供程序使用 customProvider
属性而不是 defaultProvider
属性将提供程序设置为默认值。典型的 web.config
文件可能包含
<system.web>
<membership defaultProvider="MySQLMembershipProvider" />
<roleManager defaultProvider="MySQLRoleProvider" />
<profile defaultProvider="MySQLProfileProvider" />
<sessionState customProvider="MySqlSessionStateStore" />
<compilation debug="false">
...
这将设置 MySQL 提供程序作为在本 Web 应用程序中使用的默认值。
提供程序在文件 mysql.web.dll
中实现,该文件可以在您的 Connector/NET 安装文件夹中找到。无需运行任何类型的 SQL 脚本来设置数据库模式,因为提供程序会自动创建和维护适当的模式。
使用 MySQL 提供程序
使用提供程序的最简单方法是使用 ASP.NET 配置工具,该工具在加载网站项目时可在解决方案资源管理器工具栏上使用。
在打开的网页中,您可以通过为每个区域选择自定义提供程序来选择 MySQL 成员资格和角色提供程序。
安装提供程序后,它会创建一个名为 LocalMySqlServer
的虚拟连接字符串。尽管必须这样做才能使提供程序在 ASP.NET 配置工具中正常工作,但您可以在 web.config
文件中覆盖此连接字符串。为此,首先删除虚拟连接字符串,然后添加正确的连接字符串,如以下示例所示
<connectionStrings>
<remove name="LocalMySqlServer"/>
<add name="LocalMySqlServer" connectionString="server=xxx;uid=xxx;pwd=xxx;database=xxx"/>
</connectionStrings>
您必须在连接中指定数据库。
在本节中可以找到演示如何使用成员资格和角色提供程序的教程 第 6.2.1 节,“教程:Connector/NET ASP.NET 成员资格和角色提供程序”。
部署
要在生产服务器上使用提供程序,请分发 MySql.Data
和 MySql.Web
程序集,并将它们注册到远程系统的全局程序集缓存中,或者将它们保留在应用程序的 bin
目录中。