1

我已经通过NuGet(BundleTransformer.SassAndScss v1.9.96 与 Core 和 LibSassHost 组件)在我的MVC 5项目中设置了BundleTranslator 。接下来,我将捆绑引用添加到我的 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">

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

我已将 Sass 文件Build Action更改为Content(从None)并将Copy to Output Directory保留为Do not copy。我还在 Web.config 中添加了 httpHandlers(但我实际上不知道该怎么做),但仍然没有任何帮助。

<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

BundleResolver.Current = new CustomBundleResolver();
4

1 回答 1

2

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

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 需要为 . 添加 mime 类型的可能性很小.scss,但我不相信它会。

于 2016-03-31T12:33:01.600 回答