2017-02-16 38 views
0

这很奇怪。ASP.NET MVC5中不良资源路径

当我这一点,例如,在我的BundleConfig类:

bundles.Add(new StyleBundle("~/iCheck/css").Include(
       "~/Content/iCheck/flat/green.css")); 

bundles.Add(new ScriptBundle("~/iCheck/js").Include(
       "~/Scripts/icheck.js")); 

在服务器中,资源从正确的位置检索:

/Content/iCheck/flat/green.css 

然而,在其他的服务器资源使用此URL检索:

/iCheck/css?v=ENsQ8JbHO7Zzp1Za0G2FBDKGGsGf_VDHd_S5fgCyCxA1 

这会导致CSS中的图像不是f ound。我该如何解决它?在这两个服务器中都有相同的网站部署版本。我不明白为什么在一台服务器中,捆绑包的行为与其他服务器有所不同。

+0

其中一个是捆绑的,另一个不是。你是否使用不同的'debug'设置(true/false)来部署到每个服务器?这可能是因为在调试/发布模式下构建/发布或不同的web.config转换。 –

+0

不......两个都是相同的部署版本......在发布版本 – jstuardo

回答

0

绑定启用了发布版本,但不适用于调试。

属性BundleTable.EnableOptimizations将允许您覆盖开发中的绑定设置。

修正CSS中的相对路径请看CssRewriteUrlTransform

.Include("~/Content/iCheck/flat/green.css", new CssRewriteUrlTransform()) 
+0

捆绑未启用的服务器wwas使用发布bukld进行了部署:2> ------发布开始:项目:Emergencia,配置:版本x64 ------ 2>连接到C:\ WorkingFolder \ Proyectos \ Lipigas \ Web 2.0 \ Monitoreo de Atenciones \ Deploy_x64 \ Monitoreo ... 2>转换后的Web.config使用C:\ WorkingFolder \ Proyectos \ Lipigas \ Web 2.0 \ Monitoreo de Atenciones \ Monitoreo \ Emergencia \ Web.Release.config到obj \ x64 \ Release \ TransformWebConfig \ transformed \ Web.config。 2>将所有文件复制到以下临时位置以进行打包/发布: – jstuardo

+0

如果您使用包,则启用捆绑功能时,“/ iCheck/css?v = ENsQ8JbHO7Zzp1Za0G2FBDKGGsGf_VDHd_S5fgCyCxA1”是正确的位置,将多个文件组合并缩小为单个资源。要在绑定的CSS中修复相对路径,请使用'CssRewriteUrlTransform'。我假设你有多个文件捆绑,否则你真的只是获得缩小收益。如果你希望在你的视图中使用相同的路径'/ Content/iCheck/flat/green.css',那么在bundle中只有一个文件没有意义。什么工具向您显示从哪里获取资源? –

+0

Firebug正在显示获取资源的实际路径.....如果CSS内部存在指向图像的url指令,如何使用CssRewriteUrlTransform来转换URL?然而,最令人好奇的是:如果我已经发布了该网站(当然,在发布版本中),并且在2个不同的服务器上复制了相同的已发布文件。为什么在一台服务器上,资源被缩小,而在其他服务器上却不是? – jstuardo