第2回 MySQL ConnectorでDBに接続:連載:MonoでOSSなASP.NET MVCアプリ(2/3 ページ)
Mono×Linux環境でMySQL Connector/NETやメンバーシップAPIを使う方法、さらにJenkinsで継続的インテグレーションを実施する方法を解説する。
メンバーシップ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>
設定後に起動すると、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
}
のように「MONO_OPTIONS=--debug」を設定しておくことで、スタック・トレースにファイル名や行番号も表示されるようになり、格段にデバッグしやすくなる。
Copyright© Digital Advantage Corp. All Rights Reserved.