部署后没有显示捆绑的CSS ... ASP.NET MVC4

时间:2013-02-19 23:15:13

标签: asp.net-mvc bundling-and-minification

在部署我的MVC应用程序时,.NET 4.5框架正在捆绑&缩小我的CSS。但是,结果文件为空,因此不应用CSS规则。在Chrome中,我收到Resource interpreted as Stylesheet but transferred with MIME type text/plain警告。在IE9中,我收到CSS was ignored due to mime type mismatch警告。

这就是我的BundleConfig中的内容

bundles.Add(
    new StyleBundle("~/Content/bootstrap").Include(
        "~/Content/bootstrap/bootstrap-responsive.css",
        "~/Content/bootstrap/bootstrap-editable.css",
        "~/Content/bootstrap/FileUpload.css"));

这是我的布局负责人:

<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="IE=Edge" />
    <title>@ViewBag.Title</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width" />
    <link href="@ViewBag.StyleUrl" rel="stylesheet" type="text/css" />
    @Styles.Render("~/Content/bootstrap")
    <script src="~/scripts/libs/modernizr/modernizr-2.5.3.js" type="text/javascript"></script>
</head>

额外的样式表适用于管理工具中基于配置的动态加载样式表。

当我在本地运行,或者如果我设置debug =“true”,那么我得到我的个人文件&amp;一切看起来都应该如此。如果我将这些硬编码到我的布局页面,它们显示正常。我查了一下IIS&amp;查看CSS的正确MIME类型(考虑到硬编码值有效,这是有道理的)。我还检查了以确保安装了“静态内容”角色服务,因为我在Google搜索中也遇到过这种情况。

有什么想法吗?

3 个答案:

答案 0 :(得分:22)

捆绑包名称与文件系统上的文件夹名称相同,

将您的包更改为

bundles.Add(
new StyleBundle("~/Content/bootstrapBundle").Include(
    "~/Content/bootstrap/bootstrap-responsive.css",
    "~/Content/bootstrap/bootstrap-editable.css",
    "~/Content/bootstrap/FileUpload.css"));

即。所以捆绑包的名称不是文件夹或文件的名称

答案 1 :(得分:1)

有同样的问题。我的解决方案是bundle的无效名称(它由'_'或'。'组成)。名称必须是纯文本:

#!/bin/sh
set -x
FTPHOST='host-address'
FTPUSER='ftp-username'
FTPPASSWD='yourPass'

ftp -n -v $FTPHOST << EOT
ascii
user $FTPUSER $FTPPASSWD
prompt
##Your commands
bye
EOT

必须是:

bundles.Add(
new StyleBundle("~/Content/bootstrap_Bundle").Include(
    "~/Content/bootstrap/bootstrap-responsive.css",
    "~/Content/bootstrap/bootstrap-editable.css",
    "~/Content/bootstrap/FileUpload.css"));

答案 2 :(得分:0)

如果你正在使用像dot defender这样的产品,那么它也会给你这个错误条件。当你捆绑时,如果cache buster参数包含双破折号,那么像dot defender这样的产品会将其视为可能的SQL注入攻击并最终干扰请求/响应。

解决此问题的一种方法(假设您无法关闭该软件)只是在原始css文件中添加内容,例如.dotdefenderbuster {}

我需要检查捆绑算法是否已更新,以便影响缓存密钥。

例如: http://www.foo.com/MyApp/Content/themes/MyApp/css?v=J9DBkvB7JWRo80eUukDOe3--6DAtA1