11

在部署我的 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",那么我会得到我的个人文件,并且一切看起来都应该如此。如果我将这些硬编码到我的布局页面中,它们会显示得很好。我检查了 IIS 并查看了 CSS 的正确 MIME 类型(考虑到硬编码值有效,这很有意义)。我还检查以确保安装了“静态内容”角色服务,因为我在谷歌搜索中也遇到过。

有什么想法吗?

4

3 回答 3

25

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

将您的捆绑包更改为

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

也就是说,捆绑的名称不是文件夹或文件的名称

于 2013-02-20T01:12:50.657 回答
1

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

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

必须是:

bundles.Add(
new StyleBundle("~/Content/bootstrapBundle").Include(
    "~/Content/bootstrap/bootstrap-responsive.css",
    "~/Content/bootstrap/bootstrap-editable.css",
    "~/Content/bootstrap/FileUpload.css"));
于 2016-07-06T10:54:04.753 回答
0

如果您使用的是 dot defender 之类的产品,它也可能会出现这种错误情况。捆绑时,如果缓存破坏器参数包含双破折号,那么像点防御者这样的产品会将其视为可能的 SQL 注入攻击并最终干扰请求/响应。

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

我需要检查捆绑算法是否已更新以允许影响缓存破坏密钥。

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

于 2015-02-14T16:34:49.880 回答