4.6.2 ASP.NET 提供者模型和教程

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 会安装提供程序并将它们注册到machine.config您计算机上的 .NET 配置文件 ( ) 中。附加条目修改 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 配置工具在文件中设置。

在撰写本文时,MySqlSessionStateStoremachine.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,此文件可在您的连接器/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>
笔记

您必须在此连接中指定数据库。

与其手动编辑配置文件,不如考虑使用 MySQL for Visual Studio 中的 MySQL 应用程序配置工具来配置所需的提供程序设置。该工具会将您的 Web.config文件修改为所需的配置。下一节 MySQL 应用程序配置工具中提供了有关执行此操作的教程。

可以在以下 第 4.6.2.1 节“教程:连接器/NET ASP.NET 成员身份和角色提供程序”中找到演示如何使用成员身份和角色提供程序的教程。

部署

要在生产服务器上使用提供程序,分发 程序集MySql.DataMySql.Web 程序集,然后在远程系统全局程序集缓存中注册它们或将它们保存在bin 应用程序的目录中。