Documentation Home
MySQL Connector/NET Developer Guide
Related Documentation Download this Manual
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET Developer Guide  / Connector/NET Tutorials  /  ASP.NET Provider Model and Tutorials

6.2 ASP.NET Provider Model and Tutorials

MySQL Connector/NET includes a provider model for use with ASP.NET applications. This model enables developers to focus on the business logic of their application instead of having to recreate such boilerplate items as membership and roles support.

Connector/NET supports the following web providers:

  • Membership provider

  • Roles provider

  • Profiles provider

  • Session state provider

The following tables show the supported providers, their default provider and the corresponding MySQL provider.

Membership Provider

Default ProviderSystem.Web.Security.SqlMembershipProvider
MySQL ProviderMySql.Web.Security.MySQLMembershipProvider

Role Provider

Default ProviderSystem.Web.Security.SqlRoleProvider
MySQL ProviderMySql.Web.Security.MySQLRoleProvider

Profile Provider

Default ProviderSystem.Web.Profile.SqlProfileProvider
MySQL ProviderMySql.Web.Profile.MySQLProfileProvider

Session State Provider

Default ProviderSystem.Web.SessionState.InProcSessionStateStore
MySQL ProviderMySql.Web.SessionState.MySqlSessionStateStore
Note

The MySQL session state provider uses slightly different capitalization on the class name compared to the other MySQL providers.

Installing the Providers

The installation of Connector/NET installs the providers and registers them in the .NET configuration file (machine.config) on your computer. The additional entries modify thesystem.web section of the file, which appears similar to the following example after the installation.

<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>

Each provider type can have multiple provider implementations. The default provider can also be set here using thedefaultProvider attribute, but usually this is set in theweb.config file either manually or by using the ASP.NET configuration tool.

At time of writing, theMySqlSessionStateStore is not added tomachine.config at install time, and so add the following:

<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>

The session state provider uses thecustomProvider attribute, rather thandefaultProvider, to set the provider as the default. A typicalweb.config file might contain:

   <system.web>        <membership defaultProvider="MySQLMembershipProvider" />        <roleManager defaultProvider="MySQLRoleProvider" />        <profile defaultProvider="MySQLProfileProvider" />        <sessionState customProvider="MySqlSessionStateStore" />        <compilation debug="false">          ...

This sets the MySQL Providers as the defaults to be used in this web application.

The providers are implemented in the filemysql.web.dll and this file can be found in your Connector/NET installation folder. There is no need to run any type of SQL script to set up the database schema, as the providers create and maintain the proper schema automatically.

Working with MySQL Providers

The easiest way to start using the providers is to use the ASP.NET configuration tool that is available on the Solution Explorer toolbar when you have a website project loaded.

In the web pages that open, you can select the MySQL membership and roles providers by picking a custom provider for each area.

When the provider is installed, it creates a dummy connection string namedLocalMySqlServer. Although this has to be done so that the provider will work in the ASP.NET configuration tool, you override this connection string in yourweb.config file. You do this by first removing the dummy connection string and then adding in the proper one, as shown in the following example:

<connectionStrings>  <remove name="LocalMySqlServer"/>  <add name="LocalMySqlServer" connectionString="server=xxx;uid=xxx;pwd=xxx;database=xxx"/></connectionStrings>
Note

You must specify the database in this connection.

A tutorial demonstrating how to use the membership and role providers can be found in the following sectionSection 6.2.1, “Tutorial: Connector/NET ASP.NET Membership and Role Provider”.

Deployment

To use the providers on a production server, distribute theMySql.Data and theMySql.Web assemblies, and either register them in the remote systems Global Assembly Cache or keep them in thebin directory of your application.