【问题标题】:CSS images not showing in ASP.NET MVCCSS 图像未在 ASP.NET MVC 中显示
【发布时间】:2011-07-31 08:07:16
【问题描述】:

在我的 ASP.NET MVC 应用程序中,我通过 CSS 引用背景图像。当我在开发环境中运行它时,它们显示得很好。但是当我部署它(使用 IIS 7.5)时,图像根本不会加载。我尝试了相对路径和background/background-image CSS 标签的所有组合,但没有任何效果。这是我的文件结构和 CSS:

文件结构:

Content  
    CSS file  
images  
    image.png  

CSS:

background-image: url(/images/bsb_header2.png);

我也试过../images/bsb_header2.png../../images/bsb_header2.png 都无济于事。

真正奇怪的是,当我尝试直接访问图像(即www.website.com/images/image.png)时,我被重定向到登录页面。也许我缺少一些访问或安全设置?我还没有对登录控件做任何事情(默认帐户视图和控制器在我的项目中,但我还没有对它们做任何事情),我可以很好地查看我的所有其他页面。

更新:我终于想通了。有问题的图像文件已加密。右键单击图像文件并导航到属性,单击常规选项卡上的高级按钮,取消选中“加密内容以保护数据”,单击确定,确定。

当我注意到 Windows 资源管理器中的文件名是绿色时,我终于得到了提示。我一直看到绿色文件名没有问题,所以我没有想到它。然后我注意到它是整个 web 应用程序文件夹中唯一的绿色文件。将两个和两个放在一起,它立即起作用。感谢大家的帮助。

【问题讨论】:

  • 你能提供一个实时链接吗?

标签: css asp.net-mvc image


【解决方案1】:

请添加两个用户 IUSRIIS_IUSRS 到发布文件夹并为其分配读取和执行权限

【讨论】:

    【解决方案2】:

    我终于想通了。有问题的图像文件已加密。右键单击图像文件->属性->常规选项卡上的高级按钮->取消选中“加密内容以保护数据”->确定->确定。

    当我注意到 Windows 资源管理器中的文件名是绿色时,我终于得到了提示。我一直看到绿色文件名没有问题,所以我没有想到它。然后我注意到它是整个 web 应用程序文件夹中唯一的绿色文件。将 2 和 2 放在一起,它立即起作用。感谢大家的帮助。

    【讨论】:

      【解决方案3】:

      是否可能是 IIS 7.5 没有正确安装?

      如果您转到打开或关闭 Windows 功能 - 在:

      互联网信息服务/ 万维网服务 / 常见的 Http 特性

      有一个静态内容复选框

      检查了吗?

      请参阅此link 以获取屏幕截图。

      【讨论】:

      【解决方案4】:

      在 css 中设置“显示:块”

      .searchbtn
      {
          margin-top:-15px;
          background-image:url(../images/icons/search.png);
          background-repeat:no-repeat;
          width:18px;
          height:18px;
          display: block;
      }
      

      【讨论】:

        【解决方案5】:

        URL 应该是相对的!

        background-image: url(images/bsb_header2.png)
        

        【讨论】:

        • “我也试过 ../images/bsb_header2.png 和 ../../images/bsb_header2.png 无济于事。” - 两者都是相对的。
        • 谢谢,但这没有用。我认为问题是更深层次的。正如我所提到的,我什至不能直接浏览图像。当我登录时,系统会提示我。
        【解决方案6】:

        根据您的描述,对 .png 的请求似乎被路由到 ASP.NET/MVC 引擎,而不是由 IIS 提供服务。

        Global.asax 中的路由规则是否有可能选择 .png 文件? (我知道这并不能解释为什么它可以在您的开发环境中工作)。

        如果在 Global.asax 中的路由列表开头添加 .png 文件的 ignoreRoute 是否有效?像下面这样...

         routes.IgnoreRoute("{resource}.png");
        

        【讨论】:

        • 谢谢,但不幸的是这不起作用。我对 IIS 相当陌生; IIS 中是否有我必须设置的设置才能让它提供图像?
        【解决方案7】:

        遇到了同样的问题,终于找到了解决办法。

        • 在 IIS 中打开“授权规则”。
        • 如果没有,点击“添加允许规则”
        • 选择“所有用户”并点击确定

        【讨论】:

        • 规则存在,但问题依然存在。不过感谢您的回复。
        猜你喜欢
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-19
        • 2013-08-19
        相关资源
        最近更新 更多