【问题标题】:How to fix images paths in CSS after IIS publishing?IIS发布后如何修复CSS中的图像路径?
【发布时间】:2013-10-06 19:23:18
【问题描述】:

我是 MVC (V4) 的新手,在将我的网站发布到 IIS 后遇到问题。 通过 Web 浏览器(和页面检查器)在 IIS express 中查看时,我的网站运行良好。但是,当我将我的网站(通过 VS2012)发布到 IIS 时,我所有来自我的 CSS 引用的图像都被破坏了。

我的CSS文件夹如下:

ROOT\Content\MyCss

我的图片文件夹是:

ROOT\Images\MyImages

IIS 虚拟目录和我的项目目录中的文件夹结构相同。

我所有的图片都是这样引用的:

../../Images/MyImages/image.jpg

当我将 CSS 引用更改为 ../Images/MyImages/image.jpg 时,它又开始工作了。 这不包括 IIS 应用程序/虚拟目录的实际物理文件夹路径。

我将不胜感激任何帮助解决这个问题。

【问题讨论】:

  • 你有没有使用捆绑输出你的css?可能,(是的,我只是猜测)当使用发布配置文件时,您捆绑的 css 位于ROOT 位置。但是当您在没有捆绑的情况下在 Debug 中进行测试时,图像的链接基于相对于 ROOT\Content\MyCss 的路径。
  • 如果您还没有准备好使用捆绑和缩小框架,请尝试使用 ~/Images 和 ~/Content。
  • 要检查的另一件事是虚拟目录。看看里面有没有.
  • 是的,我正在使用捆绑,但是当我删除捆绑和/或在调试模式下发布时会出现同样的问题。就像它使用“ROOT\Content”作为基本相对路径而不是“ROOT\Content\MyCss”文件夹。我无法使用“~/”。它只适用于我的 chstml 而不是我的 css 文件。不 ”。”在我的虚拟目录路径中也是如此。

标签: css asp.net-mvc iis


【解决方案1】:

如果您使用捆绑包,您应该使用 ~/ 例如。 @Styles.Render("~/bundles/stylebundle") 在你看来。

在定义你的包时,文件路径总是以 ~/.例如

bundles.Add(new StyleBundle("~/bundles/test") .Include("~/content/test/test.css"));

你的 css 中的任何路径都应该是相对于 css 文件本身的。

例如background-image: url('../../Images/test.jpg');

我刚刚使用与您相同的结构构建了一个测试站点,并坚持我上面写的内容,它在调试和发布中都有效。要在您的捆绑配置文件中添加本地计算机上的发布模式,请添加

BundleTable.EnableOptimizations = true;

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2012-12-28
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多