DHJJ [Hatsune's Journal Japan] blog

Hatsune's Journal Japan blog

目次

Blog 利用状況

ニュース

最新ツイート

運営サイト

Hatsune's Journal Japan
DHJJ

著作など

資格など

OCP
MCP

書庫

日記カテゴリ

わんくま同盟

ASP.NET MVC 3をAzureで動かす

ASP.NET MVC 3が正式提供されたのでWindows Azureで動かしてみましょう。

Windows Azure Tools for Visual Studio 2010 1.3では「.NET Framework 4 role」として「ASP.NET MVC 2 Web Role」は提供されていますが、2011/01/16時点では「ASP.NET MVC 3 Web Role」はまだ提供されていません。

でも、あきらめる必要はなくもちろん解決策はあります。「Windows Azure上で帳票コンポーネント「ActiveReports for .NET 6.0J」を動作させてみた 」と同様に必要なdllの参照設定のプロパティで[ローカルコピー]プロパティを「True」に設定すればよいはずです。

Azureに配置したいASP.NET MVC 3プロジェクトを作成する

ASP.NET MVC 3の問題とAzureに配置したことによる問題を切り分けるためにも最初はASP.NET MVC 3プロジェクトとしてコード記述とデバッグを実行しておくことをお勧めします。

今回の主眼はAzureに配置して動かすための基礎情報の収集ですのでASP.NET MVC 3アプリとしてはテンプレートから自動生成した簡単なものとします。

[新しいプロジェクト]ダイアログで[Web]-[ASP.NET MVC 3 Web Application]テンプレートを選択して「MVC3Hello」という名前でプロジェクトの新規作成を行います。

MVC3-11

ASP.NET MVC 2では「ASP.NET MVC 2 空のWebアプリケーション」ASP.NET MVC 3のテンプレートではテンプレート選択後に「空のWebアプリ」と「初期設定のWebアプリ」のどちらを生成するかを選択するように変わりました。

今回は「Internet Application」でView engineとして「Razor」を選択したいと思います。

MVC3-12

ASP.NET MVC 3アプリをローカル環境で動作確認

生成された新規プロジェクトを実行すれば、ASP.NET開発サーバーが自動的に起動されてASP.NET MVC 3アプリが表示されます。

MVC3-13

Windows Azureプロジェクトに既存ASP.NET MVC 3アプリを組み込む

ASP.NET MVC 3アプリの正常動作を確認したらそのプロジェクトはいったん終了して、[新しいプロジェクト]として「Windows Azure Project」を作成します。

検証環境にはWindows Azure for Visual Studio 2010 1.3がインストールされていますので、このテンプレートで作成されるプロジェクトもAzureのGuest OS 2.0に対応したものになります。

MVC3-21

Windows Azureの稼働環境はロールとして定義しますので、Windows Azure Projectの新規作成時にも「.NET Framework 4 roles」が選べるようになっています。ここに「ASP.NET MVC 3 Web Role」があれば苦労はないのですが現時点ではありませんので、Windwos Azure Solutionにはロールを追加せずに生成を完了します。

MVC3-22

作成済のASP.NET MVC 3プロジェクトをWindows Azure Solutionに追加する

ソリューションエクスプローラで[ソリューション]を右クリックして[追加]-[既存のプロジェクト]メニューを選択し、ダイアログで「MVC3Hello.vbproj」(C#のでMVC 3アプリを作成した場合はMVC3Hello.csproj)を選択します。

MVC3-23

MVC3-24

ASP.NET MVC 3プロジェクトをWeb Roleプロジェクトして追加

Windows Azureプロジェクトの「Roles」を右クリックして[Add]-[Web Role Project in Solution]メニューを選択して「MVC3Hello」をWebロールとして追加します。

MVC3-25

MVC3-26

ASP.NET MVC 3プロジェクトの参照設定をローカルコピーに変更する

MVC3Helloプロジェクトのプロパティで参照設定を確認すると、

  • System.Web.Mvc
  • System.Web.Helpers
  • System.Web.WebPages

の3つのdllのパスがGACではないところに登録されています。

MVC3-27

そこでこの3つのdllの参照設定の[ローカルコピー]プロパティを「True」に変更します。VBの場合、ソリューションエクスプローラで「すべてのファイルを表示」としてから該当のDLLを選んでプロパティウィンドウで変更します。

MVC3-28

Windows Azureの開発環境で動作確認する

ここまで設定したらデバッグ実行すればWindows Azureの開発環境でCompute Emulatorを使って実行確認できます。

ただし、そのためにはVisual Studioを管理者として実行していなければならないので次のようなエラーが出た場合は一度Visual Studioを終了して起動アイコンを右クリックして「管理者として実行」を選択して、それから該当のソリューションを読み込んでください。

MVC3-31

また、今回のようにWindows Azure Storage Serviceを使っていないようなときでもデフォルト設定ではStorage Emulatorが起動されてSQL Server Express Editionを必要としますので、SQL Server Express Editionのサービスを上げておくか、「Start Windows Azure Storage Emulator」の設定を「False」にしておいてください。

MVC3-32

MVC3-33

ここまで設定すればASP.NET MVC 3アプリをWindows Azureの開発環境で動作させることができますので早速実行してみましょう。

MVC3-35

Windows Azureの実行環境にデプロイして動作確認する

ソリューションエクスプローラでWindows Azure プロジェクトを右クリックして[発行]メニューを選択してDeployを行います。

MVC3-41

すでにアプリをデプロイ済だった場合は次のようなダイアログが表示されるので[Delete and Continue]ボタンをクリックして処理を継続します。

MVC3-42

SDK 1.3でデプロイ時間が短くなったとの事ですが、確かに以前は16~20分かかっていたのが11分くらいに短縮されています。

MVC3-43

それでは、Website URLに書かれたURLをクリックして動作確認してみましょう。

MVC3-44

このように残念な結果になるのはASP.NET MVC 3の動作に必要でWindows Azure上に存在しないDLLを転送できていないからです(実際は詳細のエラーを表示するようにweb.configを書き換えてエラー表示により確認しました)。

ASP.NET MVC 3をWindows Azureで動作させるのに必要なDLL

最初に参照設定されていた3つのDLLの[ローカルコピー]を「True」にしていましたが色々調べてみると、そのDLLが使っているDLLがあるようです。

「参照の追加」でSystem.Web.MvcのパスにあるDLLを確認してたところ、最初の3つ以外にも次のDLLが必要だという事が分かりました。

MVC3-45

  • System.Web.Mvc
  • Microsoft.Web.Infrastructure
  • NuGet.Core
  • System.Web.Helpers
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Administration
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

同じパスにあるWebMatrix.DataとWebMatrix.WebDataの設定は不要でした。たぶん、WebMatrixを使わないのならばいらないのだと思います。

ASP.NET MVC 3 Azureアプリ

以上の設定によりASP.NET MVC 3アプリはWebRoleとしてWindows Azure上で無事稼働します。

MVC3-46

投稿日時 : 2011年1月16日 13:17

Feedback

# ASP.NET MVC 3 on Azureの.NET trust levelを考える 2011/01/16 15:17 DHJJ [Hatsune's Journal Japan] blog

ASP.NET MVC 3 on Azureの.NET trust levelを考える

# ASP.NET MVC 3 on Azureの.NET trust levelを考える 2011/01/16 15:17 DHJJ [Hatsune's Journal Japan] blog

ASP.NET MVC 3 on Azureの.NET trust levelを考える

# XbKFmLGjSu 2011/12/30 3:55 Urson0Xk

PnL9x7 http://www.2KFk8UxzgR3t2CjpiGYlWRZr9NzJwIs8.com

# XbKFmLGjSu 2011/12/30 3:55 Urson0Xk

PnL9x7 http://www.2KFk8UxzgR3t2CjpiGYlWRZr9NzJwIs8.com

# XbKFmLGjSu 2011/12/30 3:55 Urson0Xk

PnL9x7 http://www.2KFk8UxzgR3t2CjpiGYlWRZr9NzJwIs8.com

# XbKFmLGjSu 2011/12/30 3:55 Urson0Xk

PnL9x7 http://www.2KFk8UxzgR3t2CjpiGYlWRZr9NzJwIs8.com

# ChWQODAExxdUuh 2012/07/12 0:43 john

nDYqJ6 http://www.fgY2lP9v0g6Cx2Jl.com

# botte ugg 2012/11/17 15:58 http://www.uggpaschersoldesfr.com/

If you desire the marketing of these worthy, reckon your friends.
botte ugg http://www.uggpaschersoldesfr.com/

# destockchine 2013/01/11 22:24 http://www.destockchinefr.fr/veste-marque-pas-cher

Do not ever speak of a joy to one significantly less lucky enough instead of for yourself.
destockchine http://www.destockchinefr.fr/veste-marque-pas-cher/veste-ed-hardy-pas-cher/

# casquette unkut 2013/02/28 13:07 http://www.b66.fr/

Absolutely love, companionship, obedience, really do not link people young and old as much as a prevalent hatred with regards to a specific product. casquette unkut http://www.b66.fr/

# destockchine 2013/03/10 10:35 http://www.b77.fr/lunettes-c-22.html/

Precisely there could be marital life with no need of love, you'll see love with no need of marital life. destockchine http://www.b77.fr/lunettes-c-22.html/

# pari street 2013/03/15 18:08 http://www.a88.fr/

Affection is really frail into contraception, it also multiplies more substantial as they age exhibit your hard work the right way given. pari street http://www.a88.fr/

# pick your shoes 2013/04/04 9:59 http://nikejordanretro7ok.com/

Usually do not it's the perfect time who're pleasant to be with. Connect with others who will compel 1 lever your own self it. pick your shoes http://nikejordanretro7ok.com/

# yfr.fr 2013/04/05 10:30 http://www.yfr.fr/

An actual comrade is actually who actually overlooks your backsliding or can handle your successes. yfr.fr http://www.yfr.fr/

# eNCZliSNVWgoWzjQz 2017/05/19 1:15 JimmiXzSq

FAMfwk http://www.LnAJ7K8QSpkiStk3sLL0hQP6MO2wQ8gO.com

タイトル  
名前  
Url
コメント