我已经开发了几个月的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的推荐看起来似乎可行,但我找不到任何关于如何安装此软件包的文档。
答案 0 :(得分:4)
请参阅我的回答: CSS/JS bundle in single file in mvc when publish with release option
它处理这个确切的问题以及解决它的选项。