ASP.Net MVC 4 で記述された小さな Web アプリをデプロイしました。JS/CSS バンドルが適切にセットアップされ、ローカルで正常に動作します。問題は、IIS 6 サーバーに展開すると、バンドルが機能しないように見えることです。js/css がダウンロードされず、スクリプトの js リンクに移動しようとすると、404 が表示されます。
MVC 4 を IIS 6 に展開して、これを機能させた人はいますか?
ASP.Net MVC 4 で記述された小さな Web アプリをデプロイしました。JS/CSS バンドルが適切にセットアップされ、ローカルで正常に動作します。問題は、IIS 6 サーバーに展開すると、バンドルが機能しないように見えることです。js/css がダウンロードされず、スクリプトの js リンクに移動しようとすると、404 が表示されます。
MVC 4 を IIS 6 に展開して、これを機能させた人はいますか?
問題は、ASP.Net 2.0 用に構成された既定の Web サイトの下で、ASP.Net 4.0 用に構成された仮想ディレクトリとして実行していたことです。
新しい Web サイトを作成し、それを asp.net 4.0 に設定すると、すべてが完全に機能しました。Haacked extensionless urlsに関するこの投稿によると、IIS 6 のほとんどのインスタンスで動作するはずです。
バンドルは、次のような拡張子のない URL を介して提供されます。
IIS 6 は、そのままでは拡張子のない URL をサポートしていません。で終わる URL に遭遇した場合、/js
またはこの URL をハンドラー (ASP.NET)/css
に関連付ける必要があるという手がかりがまったくない場合。aspnet_isapi.dll
拡張子のない URL を有効にするために、ASP.NET MVC 用に IIS 6 を構成する方法を説明しているPhil Haack のブログ投稿を読むことができます。ASP.NET MVC 3 についてですが、ASP.NET MVC 4 についてもまったく同じことが言えます。
ああ、統合パイプライン モードで実行する場合、デフォルトでこの機能を備えた IIS 7.0+ へのアップグレードを検討するかもしれません。
私の問題は、App_Start の BundleConfig.cs ファイルにありました。私のBindleConfig.csファイルは、以前は次のようになっていました
bundles.Add(new ScriptBundle("~/Scripts/ui-js").Include(
"~/Scripts/ui-js/jquery.min.1.11.1.js"
, "~/Scripts/ui-js/bootstrap.min.js"
, "~/Scripts/ui-js/bootstrap-slider.js"
, "~/Scripts/ui-js/bootstrap-lightbox.js"
, "~/Scripts/ui-js/common-script.js"
, "~/Scripts/ui-js/html5.js"
, "~/Scripts/ui-js/jquery.colorbox.js"
, "~/Scripts/ui-js/respond.src.js"
, "~/Scripts/ui-js/angular.min.js"
, "~/Scripts/ui-js/bootstrap.js"
,"~/Scripts/ui-js/jRate.min.js"
, "~/Scripts/ui-js/jcrop.min.js"
));
そして、私のレイアウトページには
@Scripts.Render("~/Scripts/ui-js")
新しい ScriptBundle()仮想パスに同じフォルダー構造を使用できないため、グーグルで調べた後、解決策を見つけました。
だから私はこれに上記を変更しました
bundles.Add(new ScriptBundle("~/Scripts/ppScript").Include(
"~/Scripts/ui-js/jquery.min.1.11.1.js"
, "~/Scripts/ui-js/bootstrap.min.js"
, "~/Scripts/ui-js/bootstrap-slider.js"
, "~/Scripts/ui-js/bootstrap-lightbox.js"
, "~/Scripts/ui-js/common-script.js"
, "~/Scripts/ui-js/html5.js"
, "~/Scripts/ui-js/jquery.colorbox.js"
, "~/Scripts/ui-js/respond.src.js"
, "~/Scripts/ui-js/angular.min.js"
, "~/Scripts/ui-js/bootstrap.js"
,"~/Scripts/ui-js/jRate.min.js"
, "~/Scripts/ui-js/jcrop.min.js"
));
そして私のレイアウトページでは、私はそれを
@Scripts.Render("~/Scripts/uiScript")
注: CSS と modernizr バンドルでも同じことを行う必要があります :)