文档首页
MySQL Connector/NET 开发人员指南
相关文档 下载本手册
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 开发人员指南  /  Connector/NET 教程  /  ASP.NET 提供程序模型和教程

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 会在您的计算机上安装提供程序并在 .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.DataMySql.Web 程序集,并将它们注册到远程系统的全局程序集缓存中,或者将它们保留在应用程序的 bin 目录中。