ASP.NET MVC 2 と Dynamic Data を共存させて IIS 6 で動作させる

まあ、うちの環境が IIS 6 なので備忘的にメモ。ASP.NET MVC も 1 と 2 でデプロイ方法も微妙に違うもよう。
※どうせすぐ MVC 3 が正式リリースされるんですよね、まあいいんです。

ASP.NET MVC 2 と Dynamic Data のプロジェクトを共存させる。

参考サイト

参考にさせてもらったサイトはおそらく MVC 1 の時のものらしく、MVC 2 はもっと簡単にできました。

ざっと手順

と言いたいところですが、基本的には参考サイトの通りでOKです。私も Tables.aspx にしました。

ポイント1 Global.asax の変更点

Dynamic Data のためのルート設定をする際に必ず既存の MVC のルート設定より前に配置しましょう。
参考サイトでも「先頭に」と書かれているのですが、意外に忘れます。
ただ、ASP.NET MVC のルーティングについて知っている人は、ルート設定は設定されている順で判定されているので前に持ってくる必要があるという事はわかるんでしょう。

ポイント2 Default.aspx について

何故かはわからないんですが、MVC 2 は Default.aspx が最初からありませんでした。なので、実は Dynamic Data の Default.aspx をそのまま持ってきても大丈夫です。
まあ、意味不明なのでやらない方がいいです、リネームしましょう。

IIS 6 の設定と ASP.NET MVC 2 プロジェクトの設定

ポイント1 ワイルドカードスクリプトマップの設定

IIS 6 と .NET Framework 3.5 さえ入っていれば基本的にはOKです。ASP.NET MVC 2 に関してはアセンブリさえモジュールに含めてしまえばサーバー機にインストールする必要はありません。
なので、すでに ASP.NET の運用環境が整っている人はワイルドカードスクリプトマップの設定だけでOKです。ASP.NET MVC 2 のサイトにだけ設定してしまいましょう。[ファイルの存在を確認する]チェックを外すのを忘れずに。

ポイント2 ASP.NET MVC 2 プロジェクトの設定

一つは上記の ASP.NET MVC 2 用のアセンブリを含める必要があれば含める事です。
C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies
にあるので、直接 Web プロジェクトの bin フォルダに放りこんでもいいですし、 MSBuild 等でデプロイを自動化しているのならそのプロセスに含めてもいいですね。

もう一つですが、Global.asax の設定が必要なかった点です。参考サイトの両方に Global.asax に対する変更が必要だと記載されていますが、私の環境では不要でした。

まとめ

思ったよりも簡単だったというのが感想でしょうか。ちょうど、開発用のツールなんかも付け加えたいと思っていたので上手く Dynamic Data と共存できたのはありがたい限り。

にしても Developer @ ADJUST さんのブログを見ていると、ASP.NET Web フォームと MVC 2 の共存は何かと大変そうですね。。個人的にも今弊社サービスが ASP.NET Web フォームで作られているので徐々に ASP.NET MVC に移行させたかったんですが。Razor とかいいなー。やっぱ MVC 3 なのかなー。