豚吐露@wiki
IIS7.5へMVC5+EntityFramework6環境をdeployする手順
最終更新:
Bot(ページ名リンク)
-
view
IIS7.5へMVC5+EntityFramework6環境をdeployする手順
~使用framework~
.NET Framework 4.5.2
ASP.NET MVC 5
Entity Framework 6
.NET Framework 4.5.2
ASP.NET MVC 5
Entity Framework 6
~開発環境~
Visual Studio 2013 Professional
Windows 7-64bit Professional
Visual Studio 2013 Professional
Windows 7-64bit Professional
久しぶりにIISへのdeployなんぞしたらサクッとハマったのでメモ。
Windows Server 2008R2(64bit)のみinstallされた状態から試みる。
※Windows Updateも未実施。
※Windows Updateも未実施。
- .NET Framework 4.5の導入
※後述してるけど、先にIIS7.5入れた方が手間少なくて良いかもしれません。
msdnからオフラインインストーラのdownload。
https://msdn.microsoft.com/ja-jp/library/5a4x27ek.aspx
downloadしたファイルの実行。
https://msdn.microsoft.com/ja-jp/library/5a4x27ek.aspx
downloadしたファイルの実行。
NDP452-KB2901907-x86-x64-AllOS-ENU.exe
ウィザードに従って行けば問題無く入るハズ。






- IIS7.5の導入
スタートメニューから[すべてのプログラム]-[管理ツール]-[サーバー マネージャー]を押下して、『サーバー マネージャー』の起動。
『役割の概要』の右にある『役割の追加』を押下。

『Web サーバー(IIS)』にcheck。


『ASP.NET』にcheck。

こんなダイアログが現れる。必要なので『必要な役割サービスを追加』。




入った。
『役割の概要』の右にある『役割の追加』を押下。

『Web サーバー(IIS)』にcheck。


『ASP.NET』にcheck。

こんなダイアログが現れる。必要なので『必要な役割サービスを追加』。




入った。
- IIS7.5と.NET Framework4.5の紐付け
この手順は、『.NET Framework4.5 → IIS7.5』の順番にinstallしてた時にだけ必要。
『IIS7.5 → .NET Framework4.5』の順にinstallしてた場合は、アプリケーションプールに4系のものが出てたので大丈夫だと思う。
『IIS7.5 → .NET Framework4.5』の順にinstallしてた場合は、アプリケーションプールに4系のものが出てたので大丈夫だと思う。
で、アプリケーションプールに4系を選択出来ない場合、以下のコマンドを実行する。
> c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Microsoft (R) ASP.NET RegIIS version 4.0.30319.34209
Administration utility to install and uninstall ASP.NET on the local machine.
Copyright (C) Microsoft Corporation. All rights reserved.
Start installing ASP.NET (4.0.30319.34209).
....
Finished installing ASP.NET (4.0.30319.34209).
これでIISで4系の.NET Frameworkが認識される。
- Webアプリケーションの登録①
とりあえず、DefaultWebSiteに追加してみる。
『Default Web Site』を右クリックして『アプリケーションの追加』を選択。
『Default Web Site』を右クリックして『アプリケーションの追加』を選択。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)
エイリアスは、当該Webサイトになんて名前で登録するか決める。
物理パスは、Visual Studioで発行した結果を置いてるpathを指定する。
物理パスは、Visual Studioで発行した結果を置いてるpathを指定する。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)
『仮想ディレクトリの追加』とかで登録した場合は、『アプリケーションへの変換』を行ってやれば、WebアプリケーションとしてIISが認識する。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)
IISがWebアプリケーションとして認識してない状態で、ASP.NET MVCのコントローラにアクセスしようとすると...

404.0が出ちゃう。『ハンドラー StaticFile』な訳無いじゃん!!と気付くと良い感じ。w
よく見たらわかると思うけど、コレ指定したURLの静的ファイルを取りに行って見つからないってerror。
MVCなので当然その場所にはfileは無い。つまりWebアプリケーションがWebアプリケーションとして動いてないからこんなmessage出ちゃうんだね。w

404.0が出ちゃう。『ハンドラー StaticFile』な訳無いじゃん!!と気付くと良い感じ。w
よく見たらわかると思うけど、コレ指定したURLの静的ファイルを取りに行って見つからないってerror。
MVCなので当然その場所にはfileは無い。つまりWebアプリケーションがWebアプリケーションとして動いてないからこんなmessage出ちゃうんだね。w
で、IIS7.5以降なら上記の設定見直したら動いたんだけど、IIS7.0じゃと動かんかった...
結局、404になってしもうて、ASP.NETが.NET4.5上で動いて無い感じ。
試行錯誤の結果、Web.configに以下の設定を追加することでIIS7.0でもちゃんと動いてくれた。
結局、404になってしもうて、ASP.NETが.NET4.5上で動いて無い感じ。
試行錯誤の結果、Web.configに以下の設定を追加することでIIS7.0でもちゃんと動いてくれた。
e.g.) Web.config
<configuration> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> </configuration>
これって何でもかんでもASP.NETと思って動かせって設定なんです。
コレで動くって事は、Web.configに<modules>とか<handlers>とかが設定できてないんだろうと思われます。
でもIISよう分からんので、これで良いかなぁ...と思うております。(´Д`)
コレで動くって事は、Web.configに<modules>とか<handlers>とかが設定できてないんだろうと思われます。
でもIISよう分からんので、これで良いかなぁ...と思うております。(´Д`)
- Webアプリケーションの登録②
実際にdeployして動かそうとしてみたところ...こんなmessageが出た。


Server Error in '/test' [[Application]]. Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. 指定されたファイルが見つかりません。
どーもDLLが足りないらしい。
こんなの入って無かったらbuildできんじゃろ?と思いつつも
こんなの入って無かったらbuildできんじゃろ?と思いつつも
PM> Install-Package Microsoft.Web.Infrastructure
'Microsoft.Web.Infrastructure 1.0.0.0' は既にインストールされています。
ArcadiaWrapper は既に 'Microsoft.Web.Infrastructure 1.0.0.0' を参照しています。
そらそーだろうよ。
と言う訳で、参照設定を確認。
『ローカル コピー』がfalseになってました。
多分、Windows Server 2012R2とかちゃんとWindows Updateやっとる環境だったら不要じゃけぇデフォルトfalseなんじゃーないかな?
と言う訳で、参照設定を確認。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)
『ローカル コピー』がfalseになってました。
多分、Windows Server 2012R2とかちゃんとWindows Updateやっとる環境だったら不要じゃけぇデフォルトfalseなんじゃーないかな?
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)
で、『ローカル コピー』をtrueに設定しなおして、発行しなおし。で、deployしたら...

表示されました。ヽ(=´▽`=)ノ

表示されました。ヽ(=´▽`=)ノ
- Webアプリケーションの登録③
別環境ですが、同じように404が出てしまう環境に遭遇したのでメモ。
環境としては、IIS7.5環境に既に.NET Framework 4.0が入っている環境へ、.NET Framework 4.5.2を入れてMVC5+EntityFramework6をdeployしたとき。
この時、.NET Framework4.5.2を入れても4系のアプリケーションプールの名称や表示されてるversionは『ASP.NET v4.0』のままで変わらない。
環境としては、IIS7.5環境に既に.NET Framework 4.0が入っている環境へ、.NET Framework 4.5.2を入れてMVC5+EntityFramework6をdeployしたとき。
この時、.NET Framework4.5.2を入れても4系のアプリケーションプールの名称や表示されてるversionは『ASP.NET v4.0』のままで変わらない。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)
※左が4.5.2入れた後に作ったアプリケーションプール。右が入れる前に作られたアプリケーションプール。
が、どうも、アプリケーションプールが動作するときは、作られたときの.NET Frameworkを使うためなのか?動きませんでした。
なので、4系が入ってない環境に、2系で動くものをdeployする場合は、最初からあるアプリケーションプールでok。
既に4系が入ってる環境に4系で動くものdeployする場合は、念のためアプリケーションプールを作り直してdeployする。って感じで良いと思う。
なので、4系が入ってない環境に、2系で動くものをdeployする場合は、最初からあるアプリケーションプールでok。
既に4系が入ってる環境に4系で動くものdeployする場合は、念のためアプリケーションプールを作り直してdeployする。って感じで良いと思う。
余談①
『ISAPIおよび CGIの制限』とかって『許可』になってなくても動くのね。(´Д`)


この辺りの設定ってなんなんかよく分からんなぁ...
『ISAPIおよび CGIの制限』とかって『許可』になってなくても動くのね。(´Д`)


この辺りの設定ってなんなんかよく分からんなぁ...
余談②
Windows Server 2008R2において、.NET Framework 4.0が入ってる環境に.NET Framework 4.5.1を突っ込むとIISの任意の機能に再起動がかかるらしい。
とりあえずFTP機能が再起動するらしい...
いや、FTPなんか使うなよ...って話なんですが...
Windows Server 2008R2において、.NET Framework 4.0が入ってる環境に.NET Framework 4.5.1を突っ込むとIISの任意の機能に再起動がかかるらしい。
とりあえずFTP機能が再起動するらしい...
いや、FTPなんか使うなよ...って話なんですが...
更新日: 2016年05月17日 (火) 17時20分08秒
添付ファイル
- ASP.NETonWin2008R2_01.png
- ASP.NETonWin2008R2_02.png
- ASP.NETonWin2008R2_03.png
- ASP.NETonWin2008R2_04.png
- ASP.NETonWin2008R2_05.png
- ASP.NETonWin2008R2_06.png
- ASP.NETonWin2008R2_07.png
- ASP.NETonWin2008R2_08.png
- ASP.NETonWin2008R2_09.png
- ASP.NETonWin2008R2_10.png
- ASP.NETonWin2008R2_11.png
- ASP.NETonWin2008R2_12.png
- ASP.NETonWin2008R2_13.png
- ASP.NETonWin2008R2_14.png
- ASP.NETonWin2008R2_14_2.png
- ASP.NETonWin2008R2_15.png
- ASP.NETonWin2008R2_16.png
- ASP.NETonWin2008R2_17.png
- ASP.NETonWin2008R2_18.png
- ASP.NETonWin2008R2_19.png
- ASP.NETonWin2008R2_20.png
- ASP.NETonWin2008R2_21.png