使用MVC w / Bundles时,CSS中的相对路径无效

时间:2014-09-12 09:43:03

标签: asp.net-mvc

我已经开发了几个月的MVC5 Web应用程序。我已经发布到用于开发,测试和预期公共服务器的3台服务器中的每一台。所有内容都经过了十几个beta测试人员的测试,本周末决定使用网络应用程序。

在将Web应用程序发布到实时(公共)主机之前,我修改了web.config以禁用公共站点的调试模式。发布后,出现了与缺少CSS和JS资源相关的各种问题。

在阅读了很多关于Bundles和404错误的文章之后,我发现了一个暗示将以下内容添加到Web.config中的文章:

<modules runAllManagedModulesForAllRequests="true">
  <remove name="BundleModule" />
  <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>

这解决了StyleBundle和ScriptBundle配置的404问题,但是现在我对以前工作正常的图像有404错误。我不确定解决这些问题的最佳方法。我不想重新定位图像,我不想编辑CSS,因为这些是分发文件(jQueryUI,ThemeRoller,DataTables等)。我想保持他们的分发文件夹结构和原始源文件(CSS和JS)不被修改。

问题的一个例子。

DataTables发布在我的〜/ Scripts文件夹中:

/Scripts/DataTables-1.10.2/
/Scripts/DataTables-1.10.2/media/css
/Scripts/DataTables-1.10.2/media/images
/Scripts/DataTables-1.10.2/media/js

捆绑配置:

bundles.Add(new ScriptBundle("~/bundles/DataTables").Include(
     "~/Scripts/DataTables-1.10.2/media/js/jquery.dataTables.js"));

bundles.Add(new StyleBundle("~/bundles/DataTables.css").Include(
     "~/Scripts/DataTables-1.10.2/media/css/jquery.dataTables.css"));

jquery.dataTables.css包含对../images/someimage.png的引用,并且启用了Web.config调试模式,这可以完美地运行。现在调试模式已被禁用且Bundles正在缩小/合并,我收到404错误:

http://example.com/GenericError.htm?aspxerrorpath=/images/someimage.png"

似乎现在假设图像URL与/ Bundles /相对 - 虽然我不是正面的。

我必须缺少额外的配置。有人能指出我正确的方向吗?

编辑

拉斐尔对这个问题的评论以及他对另一个类似的SO问题的网址没有帮助解决这个问题。 Sean对BundleTransformer的推荐看起来似乎可行,但我找不到任何关于如何安装此软件包的文档。

1 个答案:

答案 0 :(得分:4)

请参阅我的回答: CSS/JS bundle in single file in mvc when publish with release option

它处理这个确切的问题以及解决它的选项。