Sass BundleTranslator 的 SCSS

Sass SCSS by BundleTranslator

我已经通过 NuGet 在我的 MVC 5 项目中设置了 BundleTranslator(BundleTransformer.SassAndScss v1.9.96 与 Core 和 LibSassHost 组件)。接下来,我将包引用添加到我的 View.cshtml

@Styles.Render("~/Content/sass")

并重新定义了 BundleConfig.cs:

var nullOrderer = new NullOrderer();
var commonStylesBundle = new CustomStyleBundle("~/Content/sass");
commonStylesBundle.Include("~/Content/Custom/the-style.scss");
commonStylesBundle.Orderer = nullOrderer;
bundles.Add(commonStylesBundle);

构建后,网站有一个.scss参考:

<link href="/Content/Custom/the-style.scss" rel="stylesheet">

一切都在本地工作可能只是因为我安装了 SassAndCoffee 包和 SassyStudio .当我在外部 IIS 服务器上部署时出现问题。该文件存在于 Content/Custom 目录中,但该网站已损坏。 HTML 代码也有文件引用(它链接到 .scss 文件,未编译。css)但是如果我尝试导航到它,我会收到错误 500.

我已将 Sass 文件 Build Action 更改为 Content(来自 None) 并离开复制到输出目录不复制。我还添加了 httpHandlers 到 Web.config(但我实际上不知道为什么)但仍然没有任何帮助。

<httpHandlers>
  <add path="*.sass" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" />
  <add path="*.scss" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" />
</httpHandlers>

我没有检查 Web.config 中的所有设置,因为 NuGet 安装(如我所见)为 BundleTransformer 提供了此类数据。

如何配置 BundleTransformer 以在 IIS 上正常工作?我是否必须将 BundleResolver 覆盖为 in example code

BundleResolver.Current = new CustomBundleResolver();

有几件事可以尝试诊断问题。首先它在本地工作! :)

1.
值得测试您的捆绑工作是否正常。可以通过以下临时设置来完成(完成后将其取出)。

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        BundleTable.EnableOptimizations = true;

        // Bundles and stuff...
    }
}

运行 站点,然后在您的浏览器开发工具中,您应该得到如下内容:

/bundles/commonStyles?v=BzJZwKfP1XV8a6CotGRsHhbxraPDst9zDL2X4r36Y301

如果这有效,那么我们很高兴捆绑将在生产中起作用。

2.
权限。如果您收到 500 内部服务器错误,请检查包含 scss 文件的文件夹的权限。还要检查它们在那里:)

3.
哑剧类型。 IIS 可能需要为 .scss 添加 mime 类型的可能性很小,但我不相信它会。