6.2 Модель поставщика ASP.NET и руководства
MySQL Connector/NET включает модель поставщика для использования с приложениями ASP.NET. Эта модель позволяет разработчикам сосредоточиться на бизнес-логике своего приложения, вместо того, чтобы создавать такие стандартные элементы, как поддержка членства и ролей.
Connector/NET поддерживает следующие веб-поставщики:
Поставщик членства
Поставщик ролей
Поставщик профилей
Поставщик состояния сессии
В следующих таблицах показаны поддерживаемые поставщики, их поставщик по умолчанию и соответствующий поставщик 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 в качестве поставщиков по умолчанию, которые будут использоваться в этом веб-приложении.
Поставщики реализованы в файле mysql.web.dll, который можно найти в папке вашей установки Connector/NET. Нет необходимости запускать скрипты SQL для настройки схемы базы данных, так как поставщики создают и поддерживают правильную схему автоматически.
Работа с поставщиками MySQL
Самый простой способ начать использовать поставщики — использовать инструмент конфигурации ASP.NET, который доступен в палитре инструментов Solution Explorer при открытом проекте веб-сайта.
На открытых веб-страницах вы можете выбрать поставщики членства и ролей 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, «Руководство: поставщик членства и ролей ASP.NET Connector/NET».
Развертывание
Для использования поставщиков на сервере производства распределите сборки MySql.Data и MySql.Web и либо зарегистрируйте их в кэше глобальных сборок удаленных систем, либо сохраните их в каталоге bin вашего приложения.
© 2025 Oracle
Licensed under the GPLv2 License.