0

突然之间(看起来)一个完美运行的 MVC5 和 Bootstrap (LESS) 解决方案拒绝运行。当我尝试运行时,它只会给我空白屏幕,并且该站点永远不会加载。

当我在调试模式下运行时,大约 90 秒后,它崩溃并出现以下异常:

Exception thrown: 'System.AccessViolationException' in ClearScriptV8-32.dll

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

但是,如果我删除该解决方案将运行良好/bootstrap/less/grid.less

我尝试过的事情

我尝试将 V8 引擎换成 Msie。这也表明这grid.less是一个问题,特别是它指向这一行:.make-grid(sm);

当我在某处看到建议时,我尝试关闭我的 AV。它没有任何区别。

我已经用谷歌搜索了它,我发现的唯一明显相关的信息是这个链接。它建议关闭池,但我不确定如何执行此操作 - 或者它是否与我的解决方案相关 - 因为我没有ReactConfig.cs文件:

https://github.com/reactjs/React.NET/issues/102

我有点超出我的深度。有人可以帮助或建议我研究/调试此问题的方法吗?

谢谢!!


我发现了问题。引导 LESS 文件被包含两次。下面回答。


使用 V8 引擎的堆栈跟踪

  at Microsoft.ClearScript.V8.V8ContextProxyImpl.Execute(String gcDocumentName, String gcCode, Boolean evaluate, Boolean discard)
  at Microsoft.ClearScript.V8.V8ScriptEngine.<>c__DisplayClass1b.<Execute>b__19()
  at Microsoft.ClearScript.ScriptEngine.ScriptInvoke[T](Func`1 func)
  at Microsoft.ClearScript.V8.V8ScriptEngine.BaseScriptInvoke[T](Func`1 func)
  at Microsoft.ClearScript.V8.V8ScriptEngine.<>c__DisplayClass25`1.<ScriptInvoke>b__24()
  at Microsoft.ClearScript.V8.?A0x792c8756.LockCallback(Void* pvArg)
  at Microsoft.ClearScript.V8.V8ContextProxyImpl.InvokeWithLock(Action gcAction)
  at Microsoft.ClearScript.V8.V8ScriptEngine.ScriptInvoke[T](Func`1 func)
  at Microsoft.ClearScript.V8.V8ScriptEngine.Execute(String documentName, String code, Boolean evaluate, Boolean discard)
  at JavaScriptEngineSwitcher.V8.V8JsEngine.InnerEvaluate(String expression)
  at JavaScriptEngineSwitcher.V8.V8JsEngine.InnerEvaluate[T](String expression)
  at JavaScriptEngineSwitcher.Core.JsEngineBase.Evaluate[T](String expression)
  at BundleTransformer.Less.Internal.LessCompiler.Compile(String content, String path)
  at BundleTransformer.Less.Translators.LessTranslator.InnerTranslate(IAsset asset, LessCompiler lessCompiler, Boolean enableNativeMinification)
  at BundleTransformer.Less.Translators.LessTranslator.Translate(IList`1 assets)
  at BundleTransformer.Core.Transformers.TransformerBase.Translate(IList`1 assets, Boolean isDebugMode)
  at BundleTransformer.Core.Transformers.TransformerBase.Transform(IList`1 assets, BundleContext bundleContext, BundleResponse bundleResponse, VirtualPathProvider virtualPathProvider, Boolean isDebugMode)
  at BundleTransformer.Core.Transformers.TransformerBase.Process(BundleContext bundleContext, BundleResponse bundleResponse, Boolean isDebugMode)
  at BundleTransformer.Core.Transformers.TransformerBase.Process(BundleContext bundleContext, BundleResponse bundleResponse)
  at System.Web.Optimization.Bundle.ApplyTransforms(BundleContext context, String bundleContent, IEnumerable`1 bundleFiles)
  at System.Web.Optimization.Bundle.GenerateBundleResponse(BundleContext context)
  at System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context)
  at System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath)
  at System.Web.Optimization.AssetManager.DeterminePathsToRender(IEnumerable`1 assets)
  at System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String[] paths)
  at System.Web.Optimization.Styles.RenderFormat(String tagFormat, String[] paths)
  at System.Web.Optimization.Styles.Render(String[] paths)
  at ASP._Page_Views_Shared__Layout_cshtml.Execute() in C:\Users\MHL\OneDrive - FP\FpAccounting\FpAccounting\Views\Shared\_Layout.cshtml:line 7

使用 Msie 引擎的堆栈跟踪

    BundleTransformer.Core.Translators.AssetTranslationException was unhandled by user code
    HResult=-2146233088
    Message=During translation of LESS-code, readed from the file '/Content/Less/config.less', to CSS-code syntax error has occurred. 
  See more details:

  Error type: Syntax
  Message: Out of stack space
  File: /ThirdPartyPlugins/bootstrap/less/grid.less
  Line number: 66
  Column number: 3
  Source error:

  Line 65: @media (min-width: @screen-sm-min) {
  Line 66:   .make-grid(sm);
  -----------^
  Line 67: }


    Source=BundleTransformer.Less
    StackTrace:
         at BundleTransformer.Less.Translators.LessTranslator.InnerTranslate(IAsset asset, LessCompiler lessCompiler, Boolean enableNativeMinification)
         at BundleTransformer.Less.Translators.LessTranslator.Translate(IList`1 assets)
         at BundleTransformer.Core.Transformers.TransformerBase.Translate(IList`1 assets, Boolean isDebugMode)
         at BundleTransformer.Core.Transformers.TransformerBase.Transform(IList`1 assets, BundleContext bundleContext, BundleResponse bundleResponse, VirtualPathProvider virtualPathProvider, Boolean isDebugMode)
         at BundleTransformer.Core.Transformers.TransformerBase.Process(BundleContext bundleContext, BundleResponse bundleResponse, Boolean isDebugMode)
         at BundleTransformer.Core.Transformers.TransformerBase.Process(BundleContext bundleContext, BundleResponse bundleResponse)
         at System.Web.Optimization.Bundle.ApplyTransforms(BundleContext context, String bundleContent, IEnumerable`1 bundleFiles)
         at System.Web.Optimization.Bundle.GenerateBundleResponse(BundleContext context)
         at System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context)
         at System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath)
         at System.Web.Optimization.AssetManager.DeterminePathsToRender(IEnumerable`1 assets)
         at System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String[] paths)
         at System.Web.Optimization.Styles.RenderFormat(String tagFormat, String[] paths)
         at System.Web.Optimization.Styles.Render(String[] paths)
         at ASP._Page_Views_Shared__Layout_cshtml.Execute() in C:\Users\MHL\OneDrive - FP\FpAccounting\FpAccounting\Views\Shared\_Layout.cshtml:line 7
         at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
         at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
         at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
         at System.Web.WebPages.WebPageBase.<>c__DisplayClass3.<RenderPageCore>b__2(TextWriter writer)
         at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)
         at System.Web.WebPages.WebPageBase.Write(HelperResult result)
         at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
         at System.Web.WebPages.WebPageBase.PopContext()
         at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
         at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
         at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
         at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
         at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
         at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
         at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
    InnerException: 

引导网格.less

  //
  // Grid system
  // --------------------------------------------------


  // Container widths
  //
  // Set the container width, and override it for fixed navbars in media queries.

  .container {
    .container-fixed();

    @media (min-width: @screen-sm-min) {
      width: @container-sm;
    }
    @media (min-width: @screen-md-min) {
      width: @container-md;
    }
    @media (min-width: @screen-lg-min) {
      width: @container-lg;
    }
  }


  // Fluid container
  //
  // Utilizes the mixin meant for fixed width containers, but without any defined
  // width for fluid, full width layouts.

  .container-fluid {
    .container-fixed();
  }


  // Row
  //
  // Rows contain and clear the floats of your columns.

  .row {
    .make-row();
  }


  // Columns
  //
  // Common styles for small and large grid columns

  .make-grid-columns();


  // Extra small grid
  //
  // Columns, offsets, pushes, and pulls for extra small devices like
  // smartphones.

  .make-grid(xs);


  // Small grid
  //
  // Columns, offsets, pushes, and pulls for the small device range, from phones
  // to tablets.

  @media (min-width: @screen-sm-min) {
    .make-grid(sm);
  }


  // Medium grid
  //
  // Columns, offsets, pushes, and pulls for the desktop device range.

  @media (min-width: @screen-md-min) {
    .make-grid(md);
  }


  // Large grid
  //
  // Columns, offsets, pushes, and pulls for the large desktop device range.

  @media (min-width: @screen-lg-min) {
    .make-grid(lg);
  }

JsEngineSwitcherConfig.cs

public class JsEngineSwitcherConfig
{
    public static void Configure(JsEngineSwitcher engineSwitcher)
    {
        engineSwitcher.EngineFactories
            .AddV8();
        engineSwitcher.DefaultEngineName = V8JsEngine.EngineName;
    }
}

...在 Global.asax 中调用

JsEngineSwitcherConfig.Configure(JsEngineSwitcher.Instance);

在 Web.config 中

 <bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
   <less useNativeMinification="false" ieCompat="true" strictMath="false" strictUnits="false" dumpLineNumbers="None">
     <jsEngine name="V8JsEngine" />
   </less>
   <core>
     <css>
       <translators>
         <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />

       <add name="LessTranslator" type="BundleTransformer.Less.Translators.LessTranslator, BundleTransformer.Less" /></translators>
       <postProcessors>
         <add name="UrlRewritingCssPostProcessor" type="BundleTransformer.Core.PostProcessors.UrlRewritingCssPostProcessor, BundleTransformer.Core" useInDebugMode="false" />
       </postProcessors>
       <minifiers>
         <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
       </minifiers>
       <fileExtensions>
         <add fileExtension=".css" assetTypeCode="Css" />

       <add fileExtension=".less" assetTypeCode="Less" /></fileExtensions>
     </css>
     <js>
       <translators>
         <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
       </translators>
       <minifiers>
         <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
       </minifiers>
       <fileExtensions>
         <add fileExtension=".js" assetTypeCode="JavaScript" />
       </fileExtensions>
     </js>
   </core>
 </bundleTransformer>
4

1 回答 1

2

问题出在插件上(https://github.com/nakupanda/bootstrap3-dialog)。

它有 LESS 和 CSS 文件。

虽然 CSS 文件只包含插件本身的样式,但 LESS 文件除了插件样式之外还包含整个引导程序 LESS!

因此,变量和 mixin 被第二次包含在内。

于 2016-10-01T16:38:16.943 回答