ASP.NET の Web パーツ パーソナライズ情報に SQL Server 2005 を使う

Visual Studio では、ASP.NET のパーソナライズ情報は SQL Server Express を使い
App_Data下の aspnetdb.mdf を使うのがデフォルトの動作です。
でも、SQL Server 2005 をすでにライセンスしていたら、SQL Server Express じゃなくて、SQL Server を
使いたいですよね。
そんな相談を受けたので、今回は、その方法を紹介しましょう。以下の 2 つのことを行います。

  1. SQL Server に サービス用のデータベースを作成/構成する
  2. web.config を変更して、SQL Server のデータベースを使用するようにする

では、順に説明しましょう。

1. SQL Server に サービス用のデータベースを作成/構成する

これには、ASP.NET のツールを使用します。
ASP.NET には、SQL Server プロバイダが使用する SQL Server データベースを
インストールする Aspnet_regsql.exe というツールがインストールされています。
Aspnet_regsql.exe ツールのインストール先は、

C:\WINDOWS\Microsoft.NET\Framework\<versionNumber>\aspnet_regsql.exe

です。
Aspnet_regsql.exe を使用すると、SQL Server データベースを作成したり、既存のデータベースにオプションを
追加または削除したりすることができます。
いろいろなコマンドラインオプションがあるのですが、悩んだら、コマンドラインを指定せずに
そのまま aspnet_regsql.exe を実行しましょう。
ウィザード画面が起動しますので、ウィザードに従ってください。

 aspnet_regsql
説明するまでもなく、簡単にできます。

このツールで SQL Server には、aspnetdb というデータベースが作成されますので確認しておきましょう。

2. web.config を変更して、SQL Server のデータベースを使用するようにする

ASP.NET から、SQL Server プロバイダを使う設定を web.config に記述します。
少し長いですが、2-1 から 2-4 まであります。飽きずについてきてくださいね。

2-1 接続文字列を記述する

接続文字列を記述して、SQL Server を使用するように記述します。 (nameはご自由にどうぞ)

<connectionStrings>
  <add name="MySqlConnection"
    connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;"/>
</connectionStrings>

2-2 メンバシップサービス情報を記述する

SqlMembershipProvider を使用するように記述します。

<system.web>
・・・
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">
  <providers>
    <add name="SqlMembershipProvider"
    type="System.Web.Security.SqlMembershipProvider"
    connectionStringName="MySqlConnection"
    applicationName="WebPartsDemoApp"
    enablePasswordRetrieval="false"
    enablePasswordReset="true"
    requiresQuestionAndAnswer="true"
    requiresUniqueEmail="true"
    minRequiredNonalphanumericCharacters="0"
    maxInvalidPasswordAttempts="10"
    passwordFormat="Encrypted"/>
  </providers>
</membership>
・・・
</system.web>

参考: SqlMembershipProvider クラス

2-3 ロール管理情報を記述する

SqlRoleProvider を使用するように記述します。

<system.web>
・・・
<roleManager defaultProvider="SqlRoleProvider"
  enabled="true"
  cacheRolesInCookie="true"
  cookieName=".ASPROLES"
  cookieTimeout="30"
  cookiePath="/"
  cookieRequireSSL="true"
  cookieSlidingExpiration="true"
  cookieProtection="All" >
  <providers>
    <add connectionStringName="MySqlConnection"
      applicationName="WebPartsDemoApp"
      name="SqlRoleProvider"
      type="System.Web.Security.SqlRoleProvider" />
  </providers>
</roleManager>
・・・
</system.web>

参考: SqlRoleProvider クラス

2-4 Web パーツのパーソナライズ情報を記述する

SqlPersonalizationProvider を使用するように記述します。

<system.web>
・・・
<webParts>
  <personalization defaultProvider="SqlPersonalizationProvider">
    <providers>
      <add name="SqlPersonalizationProvider"
        type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider"
        connectionStringName="MySqlConnection"
        applicationName="WebPartsDemoApp" />
    </providers>
  </personalization>
</webParts>
・・・
</system.web>

参考: SqlPersonalizationProvider クラス

以上で web.config に記述する内容は終わりです。
web.config の設定を行うことで、SQL Server 2005 の aspnetdb データベースを
使用するようになりますので、パーソナライズ情報は SQL Server に格納されます。
やはり、SQL Server はガンガンに使いたいものです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。