文件首頁
MySQL Connector/NET 開發人員指南
相關文件 下載本手冊
PDF (美式 Letter) - 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 目錄中。