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
目錄中。