首页 > 解决方案 > .NET 捆绑仅在服务器重新启动时引发错误

问题描述

所以我已经进行了捆绑,我们有一个由 3 台服务器组成的网络农场运行该网站。

当应用程序池被回收时,会抛出一些错误,但我不确定如何修复它们(或者是否有可能)

.NET 框架目标版本是 4.5.1 在包管理器中说我有 Microsoft.AspNet.Web.Optimization 版本 1.1.3 最新

Bundle 是这样设置的

var bundles = BundleTable.Bundles;

bundles.Add(new StyleBundle("~/Themes/Mine/Content/bundling/css/header-styles").Include(//line 168
    "~/Themes/Mine/Content/css/styles.css",
    "~/Themes/Mine/Content/css/bootstrap.css",
    "~/Themes/Mine/Content/css/responsive.css"));

它是这样渲染的

@Styles.Render("~/Themes/Mine/Content/bundling/css/header-styles")

有任何想法吗

这是一个例外:

System.NullReferenceException:对象引用未设置为对象的实例。在 System.Collections.Generic.Dictionary 2.Insert(TKey key, TValue value, Boolean add) at System.Web.Optimization.BundleCollection.Add(Bundle bundle) at ASP._Page_Themes_Mine_Views_Shared__Root_Head_cshtml.Execute() in c:\inetpub\vhosts\site\Themes\Mine\Views\Shared\_Root.Head.cshtml:line 159 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.WebPageBase.Write(HelperResult result) at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action1 body) 在 System.Web.WebPages.WebPageBase.PopContext() 在 System.Web.WebPages.WebPageBase.<>c__DisplayClass3.b__2(TextWriter writer) 在 System.Web.WebPages.WebPageBase。1 body) at System.Web.WebPages.WebPageBase.PopContext() at System.Web.WebPages.WebPageBase.<>c__DisplayClass3.<RenderPageCore>b__2(TextWriter writer) at System.Web.WebPages.WebPageBase.Write(HelperResult result) at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action在 System.Web.WebPages.WebPageBase.PopContext() 在 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 在System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action 1 body) 写入(HelperResult 结果)System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListSystem.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) 在 System.Web.Mvc.ControllerActionInvoker 的 1 个过滤器,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult) 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListSystem.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListSystem.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) 在 System.Web.Mvc.ControllerActionInvoker 的 1 个过滤器,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult) 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IListSystem.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult) 处 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 处的.InvokeActionResultFilterRecursive(IList 1 过滤器,ActionResult actionResult) System.Web .Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) 在 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid `1.CallEndDelegate(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStepImpl (IExecutionStep 步骤)在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously)

标签: c#.netasp.net-mvcoptimizationbundling-and-minification

解决方案


好的,所以想通了,似乎在构建字典时应该在字典上放置一个锁。

var bundles = BundleTable.Bundles;

lock (bundles)
    {
        bundles.Add(new StyleBundle("~/Themes/Mine/Content/bundling/css/header-styles").Include(
            "~/Themes/Mine/Content/css/styles.css",
            "~/Themes/Mine/Content/css/bootstrap.css",
            "~/Themes/Mine/Content/css/responsive.css"));
    }

希望这对其他人有帮助:)


推荐阅读