眠いしお腹すいたし(´・ω・`)

C#関連を主に書きます。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Azure Mobile Appsの.NETバックエンドでMVCを同居させてみよう🍣=3

ごあいさつ

衣類乾燥機が今すぐ欲しいのです(´・ω・`)

本題

はじめに

Azure Mobile Appsの.NET バックエンドはASP.NET Web APIがベースとなっていてMVCを追加できません。

f:id:tamafuyou:20161216003610p:plain

でもMobileAppでもMVC使えるようにしたいですよねぇ。

ほらアプリの入口はやっぱりブラウザが多いと思いますし私がいま取り組んでいる課題で必要ですし。

ということで、Mobile AppでMVCを使えるようにしてみます。

前提

Mobile Appの.NET バックエンドプロジェクトをVSで作成してAzureにデプロイできている状態まで出来ている事を前提とします。

docs.microsoft.com

この辺を参考にすればすぐにできるかと思います。

コントローラーを追加する

Controllersフォルダに空のMVC5コントローラを追加します。

今回はPageControllerという名前にしてみました。

するとASP.NET MVCを構築するためのファイルが勝手に展開されます。

f:id:tamafuyou:20161216010937p:plain

Viewを追加する

f:id:tamafuyou:20161216011118p:plain

Viewを追加しちゃいます。

ルーティング設定を変更する

デフォルトコントローラ名を指定します。

これを行うとドメイン名のみのURL指定時のコントローラを指定できます。

f:id:tamafuyou:20161216011335p:plain

MobileAppのスタートアップを変更する

今回の肝の部分です。

現在の状態でデバッグをスタートするとこのページが表示されると思います。

f:id:tamafuyou:20161216011640p:plain

これはMobileAppのライブラリが表示しているページです。

このページを表示されないようにしMVC側のルーティング設定が適用されるようにします。

App_Start下にあるStartup.MobileApp.csを開きConfigureMobileApp関数をこのように変更します。

gist.github.com

どういう意味かというと

UseDefaultConfigurationというMobileAppConfigurationに対する拡張メソッドを分解しAddMobileAppHomeControllerという拡張メソッドを呼ばないようにしています。

AddMobileAppHomeContollerによってMobileAppの機能に関係ないルーティングが設定されてしまうためです。

これにより

f:id:tamafuyou:20161216012952p:plain

デバッグ実行すればPageコントローラのIndexがコールされIndexページが表示され、この状態でもMobileAppのAPIは正しく動作しているかと思います。

ではでは('ω')ノ