4

我已经部署了一个用 ASP.Net MVC 4 编写的小型 Web 应用程序。我们的 JS/CSS 包设置正确,它们在本地运行良好。问题是当我部署到 IIS 6 服务器时,捆绑包似乎不起作用。js/css 没有下载,当我尝试转到脚本中的 js 链接时,我得到一个 404。

有没有人将 MVC 4 部署到 IIS 6 并完成了这项工作?

4

3 回答 3

3

问题是我们在为 ASP.Net 2.0 配置的默认网站下作为为 ASP.Net 4.0 配置的虚拟目录运行。

我们创建了一个新网站并将其设置为 asp.net 4.0,一切正常。根据这篇关于Haacked 无扩展 URL 的帖子,现在应该只适用于大多数 IIS 6 实例。

于 2012-03-05T20:58:45.763 回答
2

捆绑包通过无扩展 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+,它在集成管道模式下运行时默认具有此功能。

于 2012-03-05T17:55:56.767 回答
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 包做同样的事情:)

于 2015-08-10T05:18:12.503 回答