BundleConfig类中的MVC错误:在mscorlib.dll中发生了“System.NullReferenceException”类型的异常。

6

我的MVC网站在启动时出现了BundleConfig类中的运行时错误,具体标题如下:

“System.NullReferenceException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中处理

enter image description here

引用:

using System.Web.Optimization;
using BundleTransformer.Core.Bundles;
using BundleTransformer.Core.Orderers;
using BundleTransformer.Core.Transformers;

堆栈跟踪:

[NullReferenceException: Object reference not set to an instance of an object.]
   BundleTransformer.Core.BundleTransformerContext..ctor() +162
   BundleTransformer.Core.BundleTransformerContext.<.cctor>b__0() +44
   System.Lazy`1.CreateValue() +416
   System.Lazy`1.LazyInitValue() +152
   System.Lazy`1.get_Value() +75
   BundleTransformer.Core.BundleTransformerContext.get_Current() +60
   BundleTransformer.Core.Transformers.CssTransformer..ctor(IMinifier minifier, IList`1 translators, IList`1 postProcessors, String[] ignorePatterns) +79
   BundleTransformer.Core.Transformers.CssTransformer..ctor() +97
   NWebsite.BundleConfig.RegisterBundles(BundleCollection bundles) in d:\Documents\Visual Studio 2013\Projects\N\Web\N.Website\App_Start\BundleConfig.cs:18
   NWebsite.MvcApplication.Application_Start() in d:\Documents\Visual Studio 2013\Projects\N\Web\N.Website\Global.asax.cs:20

[HttpException (0x80004005): Object reference not set to an instance of an object.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9916613
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Object reference not set to an instance of an object.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9930508
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

在 Global.asax 文件中的 MvcApplication 类:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

什么是它的原因,我该如何解决?
(针对 IT 技术问题的常见提问)

你能解决这个问题吗?我也遇到了同样的问题... - IvanL
@IvanL,我在这里没有得到任何答案,也不记得我的解决方案是什么,但可以试试这个方法: 1)备份您的项目2)从您的项目中删除所有引导文件,包括“js”、“css”等,然后构建3)运行,它是否工作?4)通过“NuGet 包管理器”添加最新版本的bootstrap到您的项目。 - Ramin Bateni
1个回答

11

我已经解决了这个问题。看起来这种情况可能是由于web.config中缺少正确的配置(在我的情况下,是由于给定环境的缺失web配置转换而导致的)。因此,请确保以下内容存在于您的web.config文件中:

<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
<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>
<less>
  <jsEngine name="MsieJsEngine" />
</less>
</bundleTransformer>
<jsEngineSwitcher xmlns="http://tempuri.org/JavaScriptEngineSwitcher.Configuration.xsd">
<core>
  <engines>
    <add name="MsieJsEngine" type="JavaScriptEngineSwitcher.Msie.MsieJsEngine, JavaScriptEngineSwitcher.Msie" />
  </engines>
</core>
</jsEngineSwitcher>

我自己无法测试你的答案,但我将其标记为被接受的答案,因为它已经被证明有用多次。 - Ramin Bateni
感谢@RAM,我相信对于许多人来说,这个问题是由于错误配置引起的。例如,在创建LESS编译组合并添加缩小功能时,很容易忽略某些部分。 - IvanL
1
此外,config 部分组必须存在于 web.config 中(如果由于某种原因缺失): `<sectionGroup name="bundleTransformer"><section name="core" type="BundleTransformer.Core.Configuration.CoreSettings, BundleTransformer.Core" /> </sectionGroup>` - fxdx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接