我已经部署了一个用 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 配置的默认网站下作为为 ASP.Net 4.0 配置的虚拟目录运行。
我们创建了一个新网站并将其设置为 asp.net 4.0,一切正常。根据这篇关于Haacked 无扩展 URL 的帖子,现在应该只适用于大多数 IIS 6 实例。
捆绑包通过无扩展 url 提供,例如:
IIS 6 不支持开箱即用的无扩展 url。当它遇到一个以 结尾的 url 时,/js
或者/css
它完全不知道它必须将此 url 与aspnet_isapi.dll
处理程序 (ASP.NET) 相关联。
您可以阅读 Phil Haack 的博客文章,其中他解释了如何为 ASP.NET MVC 配置 IIS 6 以启用无扩展 url。它是关于 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 包做同样的事情:)