連載
» 2013年07月23日 12時31分 公開

第2回 MySQL ConnectorでDBに接続連載:MonoでOSSなASP.NET MVCアプリ(2/3 ページ)

[井口圭一,HEROZ株式会社]

メンバーシップAPI

 ASP.NETには、Web.configファイルに設定するだけで、ユーザー登録や、ログイン処理などを簡単に実現できるメンバーシップAPIが提供されている。Visual StudioでASP.NET MVCのプロジェクトを作成した際も、メンバーシップAPIを使用したユーザー管理が自動で設定される。この際にもMySQL Connector/NETを使用することで、MySQL上のテーブルをメンバーシップAPIのデータ・ストアにすることも可能だ。

 メンバーシップAPIでMySQLを利用するには、先ほどNuGetで検索した際に見えた「MySql.Web」のパッケージをインストールする。続いて、Web.configファイルにMySql.Web用の設定を追加する。具体的には、テーブル未作成の場合に自動的に作成するように「autogenerateschema="true"」を設定しよう(次のコードを参照)。

<membership defaultProvider="default">
  <providers>
    <add name="default"
          autogenerateschema="true"
          type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
          connectionStringName="sample" />
  </providers>
</membership>

テーブル未作成の場合に自動的に作成する設定(Web.config)

 設定後に起動すると、MySQL Server上にメンバーシップAPI用のテーブルができているはずだ(次の画面を参照)。

MySQL Server上に作成された、メンバーシップAPI用のテーブル MySQL Server上に作成された、メンバーシップAPI用のテーブル

 この状態で、Webアプリの右上にある[ログオン]−[登録]でユーザー登録ができるようになっている。なお、今回作成したアプリも筆者のホームページ上に置いてあるので、参考にしてほしい。

【コラム】Monoでのデバッグ出力

  Mono環境でも、Web.configファイルに、

   <customErrors mode="Off"/>

を設定すれば、見慣れた例外画面が表示され、スタック・トレースも表示される。

 ただし、デフォルトではソースのファイル名や行番号は表示されない設定になっているので、いまいち問題箇所が分かりづらい。ファイル名や行番号も表示するには、Monoでコンパイルした際に生成される.mdbファイルが必要になる。.mdbファイルを.dllファイルと同じディレクトリに配置したうえで、Apache起動時の環境変数(/etc/init.d/httpdファイル)に、

start() {
         echo -n $"Starting $prog: "
         MONO_OPTIONS=--debug LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
         RETVAL=$?
         echo
         [ $RETVAL = 0 ] && touch ${lockfile}
         return $RETVAL
}


/etc/init.d/httpdファイルに太字部分を追記

のように「MONO_OPTIONS=--debug」を設定しておくことで、スタック・トレースにファイル名や行番号も表示されるようになり、格段にデバッグしやすくなる。


Copyright© Digital Advantage Corp. All Rights Reserved.

編集部からのお知らせ

6月16日にフォーマット統一のため利用規約を変更します

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。