ASP.NET MVC3 RC リリース。も、Azure 展開では少々苦労する。
ちょっと前にASP.NET MVC3 beta のことをエントリしたと思ったらもうRCのリリースです。一瞬、見間違いと思うほど早いリリース。
今回はついに
Razor がインテリセンスに対応!
これが一番大きいですね(まあ、RCなので対応して当然なんですけど)。
Razor を一目見たその日から、他のモデルで書くのが嫌になり、かといってRazor はインテリセンスが対応しておらず、、、結局、全体的にモチベーションが低下するという本末転倒な状態に陥っておりましたがこれで解決です。
で、早速、Azure 上への展開をテストしてみたのですが、ある程度覚悟していたとはいえ少しハマりました。
MVC3 をAzure 上に展開する方法については、既にネット上によいコンテンツがあるのですが・・・・。
例えば、、、
「waりとnaはてな日記」さん
http://d.hatena.ne.jp/waritohutsu/20100831/1283275189
「ソースコードから理解する技術」さん
http://undersourcecode.blog62.fc2.com/blog-entry-72.html
などが大変参考になります・・・が、
私の環境においては、ローカルコピーすべきDLLが、上記コンテンツで紹介されている
System.Web.Mvc
に加え、
System.Web.Helpers
System.Web.WebPages
さらに、
Microsoft.Web.Infrastructure
System.Web.WebPages.Razor
System.Web.Razor
を追加し、やっとこさ動作しました。
後述の3DLLは、標準ではMVC3プロジェクトには追加されていなため、参照の追加で追加したのち、さらにローカルコピーをTrueとします。
最初、System.Web.Mvcだけ追加すればいいと思い込んでおりまして、途方に暮れておりましたが、真面目にエラーを解析しようとIntelliTrace を仕込んでみたところ、、、
簡単にエラー内容を確認でき、DLL不足および足りないDLLを特定することができました。
DLLが足りないと
「Unresponsive」というエラーがでるようです(System.Web.Mvcが足りないときは、Initializeと、Stopを繰り返してましたけど)。
最初はなんで?とエラー内容がわかりませんでしたが、
エラー内容の確認は、
サーバエクスプローラからView IntelliTrace logs を選択すると(日本語だとなんでしょ。あと、ログを取るためにはPublishの時にIntelliTraceを利用するにチェックを入れておく必要があります)、
ログ自体はこんな感じでみれます。
ここでは「System.Web.Helpersが足りない!」と怒られています。これを延々繰り返してエラーをつぶしていきます・・・。その作業自体はつらくないのですが、Publish の待ち時間がしんどいですね(今のところ、3Mくらいのファイルに10分弱かかりますかね・・・)。
おそらくAzure SDK 1.3 が出るころにはMVC3 も標準となり、VMも対応することでしょう。PDCの内容からして年内と思われます。
その他、私がハマった(悪い意味です・・・)項目としては、、、
Index.cshtml とかの文字コードがUTF-8以外だとエラーがでる(ま、これは当然)。
外部エディタで編集したIndex.cshtml とかをVSにインポートした場合、Azure環境に上げてから「Index.cshtml が見つからない」的エラーが出る。VSで使用するファイルはViewフォルダを右クリックしView の追加をした方が無難かも。
とりあえず、こんな感じ。