最近、プロジェクトを MVC 3 から MVC 4 にアップグレードしました。.NET 4.0 フレームワークをターゲットにしています。Web アプリは、いくつかの参照を含める必要があるため 32 ビットです。
私たちが抱えている問題は、バンドル/ミニフィケーションを Chirpy から組み込みの ASP.NET バンドルに変換したことです。このサイトは、32 ビット サーバー、.NET 4.0 のみを実行する Windows Server 2003/IIS 6 および 2008/IIS 7.5、および当社の 64 ビット開発マシンで問題なく動作します。バンドル/縮小は、上記のすべてで正常に機能します。
.NET 4.0 のみがインストールされた 64 ビット Windows 2008 / IIS 7.5 サーバーでは、バンドルは機能しません。生成されたスクリプトとスタイルの両方で 404 エラーが発生します。
64 ビット サーバーに .NET 4.5 をインストールすると、問題なく動作します。一部のサーバーは .NET 4.5 なしで動作し、これにはそれが必要なため、これに混乱しています。その上、Windows Server 2003 / 64 ビットは .NET 4.5 と互換性がないため、それにも問題がある場合、この修正は機能しません。
奇妙なことに、x86 で構築された .NET 4.0 をターゲットとするサンプル MVC 4 サンプル インターネット アプリは、問題のサーバーで 4.0 だけで正常に動作します。web.config は、unity、logging、elmah、ドットレスの構成を除いてまったく同じです。
これについての助けは大歓迎です。
BundleConfig.cs は次のとおりです。
using System.Web;
using System.Web.Optimization;
namespace WebApp
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.UseCdn = false;
// .debug.js, -vsdoc.js and .intellisense.js files
// are in BundleTable.Bundles.IgnoreList by default.
// Clear out the list and add back the ones we want to ignore.
// Don't add back .debug.js.
bundles.IgnoreList.Clear();
bundles.IgnoreList.Ignore("*-vsdoc.js");
bundles.IgnoreList.Ignore("*intellisense.js");
bundles.Add((new ScriptBundle("~/bundles/WebApp.Register1")).Include("~/Scripts/jquery.ba-tinypubsub.min.js",
"~/Scripts/knockout-2.1.0.js",
"~/Scripts/WebApp/WebApp.Register.RegisterStudent.js",
"~/Scripts/WebApp/WebApp.Register.RegisterPresenter.js"));
bundles.Add((new Bundle("~/bundles/WebApp.Register2")).Include("~/Scripts/WebApp/WebApp.Register.StudentSelect.js"));
bundles.Add((new ScriptBundle("~/bundles/WebApp.View1")).Include("~/Scripts/jquery.ba-tinypubsub.min.js",
"~/Scripts/WebApp/WebApp.View.ImagePresenter.js",
"~/Scripts/WebApp/WebApp.View.ImageResults.js"));
bundles.Add((new Bundle("~/bundles/WebApp.View2")).Include("~/Scripts/WebApp/WebApp.View.StudentsSelect.js"));
bundles.Add((new ScriptBundle("~/bundles/WebApp.Print1")).Include("~/Scripts/WebApp/WebApp.Print.SelectedIdArray.js",
"~/Scripts/jquery.ba-tinypubsub.min.js",
"~/Scripts/WebApp/WebApp.Print.DocumentsSelect.js",
"~/Scripts/WebApp/WebApp.Print.DocumentsSelected.js",
"~/Scripts/WebApp/WebApp.Print.DocumentsPresenter.js",
"~/Scripts/WebApp/WebApp.Print.StudentsPresenter.js",
"~/Scripts/WebApp/WebApp.Print.PrinterSelected.js",
"~/Scripts/WebApp/WebApp.Print.OutputSummary.js",
"~/Scripts/WebApp/WebApp.Print.OutputPresenter.js",
"~/Scripts/WebApp/WebApp.Print.NoStudentPresenter.js"));
bundles.Add((new Bundle("~/bundles/WebApp.Print2")).Include("~/Scripts/WebApp/WebApp.Print.StudentsSelect.js",
"~/Scripts/WebApp/WebApp.Print.StudentsSelected.js"));
bundles.Add((new ScriptBundle("~/bundles/WebApp.Main")).Include("~/Scripts/modernizr.custom.33607.js",
"~/Scripts/jquery-1.6.1.js",
"~/Scripts/jquery-ui-1.8.10.custom.min.js",
"~/Scripts/jquery-ui.min.js",
"~/Scripts/json.js",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.marquee.js",
"~/Scripts/YUI.js",
"~/Scripts/Common.SearchHighlight.js"));
bundles.Add((new StyleBundle("~/bundles/Content/WebApp.Main")).Include("~/Content/jquery.marquee.min.css",
"~/Content/YUI.css",
"~/Content/Site.css",
"~/Content/ui-lightness/jquery-ui-1.8.10.custom.css"));
}
}
}
レイアウトでバンドルを参照する方法は次のとおりです。
@Scripts.Render("~/bundles/WebApp.Main")
<link href="@Url.Content("~/Content/SiteLess.less")" rel="stylesheet" type="text/css" />
@Styles.Render("~/bundles/Content/WebApp.Main")
...
編集: 応答/更新
- はい、有効な 32 ビット アプリ フラグがアプリ プールで True に設定されています。
- 404 を与える要求へのパスは、次のようになりますhttp://xx.xx.xx.xxx/WebApp/bundles/WebApp.Main?v=03pBc7hdH1lHLtZGx-JMosNaLpMK7fcmI0uI6auknHw1
- Windows イベント ビューアに何も表示されない
- .NET 4.5 をインストールしてアンインストールし、.NET 4.0 を再インストールすると動作します。
- エンタープライズ 2008 64 ビット サーバーで動作します。問題のサーバーは標準版です。VM を再構築して、問題が解決するかどうかを確認します。