ASP.NET MVC 5在Windows Azure中调用* .less时发生错误

时间:2014-05-21 11:59:33

标签: asp.net-mvc azure less asp.net-mvc-5

我在" ASP.NET MVC 5"中有一个项目。并使用" less"对于文件" bootstrap",请使用以下库:

http://www.nuget.org/packages/BundleTransformer.Core/ http://www.nuget.org/packages/BundleTransformer.Less/ http://www.nuget.org/packages/JavaScriptEngineSwitcher.Core/ http://www.nuget.org/packages/JavaScriptEngineSwitcher.Msie/ http://www.nuget.org/packages/MsieJavaScriptEngine/

在我的BundleConfig.css中我有这个:

BundleTable.EnableOptimizations = false;
bundles.UseCdn = true;
CssTransformer cssTransformer = new CssTransformer();
JsTransformer jsTransformer = new JsTransformer();
NullOrderer nullOrderer = new NullOrderer();

Bundle cssBundle = new CustomStyleBundle("~/bundles/css");
cssBundle.Include("~/Content/bootstrap/bootstrap.less");
cssBundle.Include("~/Content/font-awesome.css");
cssBundle.Include("~/Content/site.less");
cssBundle.Transforms.Add(cssTransformer);
cssBundle.Orderer = nullOrderer;
bundles.Add(cssBundle);

在我的环境中工作正常,如果我使用IIS工作正常,但当我在" Windows Azure"因为"较少"文件出现此错误:

HTTP/1.1 500 Internal Server Error
Content-Length: 75
Content-Type: text/html
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Date: Wed, 21 May 2014 11:56:01 GMT

The page cannot be displayed because an internal server error has occurred.

只有文件较少,其他文件如css o js return rigth

(我认为我有另一个问题,它没有显示错误,但这是另一个问题)。 Web.config错误:

<system.web>

    <customErrors mode="Off">
    </customErrors>

修改

在像this template

这样的web.config中配置较少的配置
<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">

  <less>
    <jsEngine name="MsieJsEngine" />
  </less>

    <core>
        <css>
            <minifiers>
                <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
            </minifiers>
            <translators>
                <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
            <add name="LessTranslator" type="BundleTransformer.Less.Translators.LessTranslator, BundleTransformer.Less" /></translators>
        </css>
        <js>
            <minifiers>
                <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
            </minifiers>
            <translators>
                <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
            </translators>
        </js>

    </core>
</bundleTransformer>
<jsEngineSwitcher xmlns="http://tempuri.org/JavaScriptEngineSwitcher.Configuration.xsd">
  <core>
        <engines>
            <add name="MsieJsEngine" type="JavaScriptEngineSwitcher.Msie.MsieJsEngine, JavaScriptEngineSwitcher.Msie" />
        </engines>
    </core>
</jsEngineSwitcher>

2 个答案:

答案 0 :(得分:3)

从代码中删除以下行:

cssBundle.Transforms.Add(cssTransformer);

此行是多余的,在使用CustomStyleBundle类时可能会导致错误。

答案 1 :(得分:0)

BundleTransformer仅在捆绑时有效。换句话说,* .less文件永远不会被客户端实际使用,而是转换为CSS,然后在实际发送之前进行组合和缩小。直接请求* .less文件将无法工作,除非IIS有一个mime类型来处理它,但即使设置它也不能真正帮助你,因为IIS通常不会提供此文件。