【发布时间】:2012-02-02 14:52:43
【问题描述】:
我们有一个在 F5 负载平衡服务器上运行的 ASP.NET 4.0 MVC3 应用程序。
我们收到了以下异常。我们不在我们的 Web 应用程序中执行多线程,但不知道 F5 负载平衡服务器是否可以考虑在内。我们看到早期版本的 .NET 上出现异常的位置(大多数其他帖子都涉及 .NET 2.0 和 3.5)。有没有人遇到过 .NET 4.0 的这个问题?
该异常导致应用程序无法使用,因为在登录时无法加载任何页面而不遇到异常。
已审核的其他链接:
- Hashtable insert failed. Load factor too high. - ASP.NET 2.0
- HashTable Insert Failed. Load Factor Too High. .NET 2.0 SP2
- Frustrating error in WPF (.NET 4.0) internals: Hashtable insert failed. Load factor too high
2012-02-02 06:01:42,671 [26] 致命系统 [(null)] – 未处理 XYZ 应用程序中发生异常。 System.InvalidOperationException:哈希表插入失败。负载系数 太高。最常见的原因是多个线程写入 Hashtable 同时进行。在 System.Collections.Hashtable.Insert(对象键,对象 nvalue,布尔值 添加)在 System.ComponentModel.TypeDescriptor.NodeFor(类型类型, 布尔值 createDelegator) 在 System.ComponentModel.TypeDescriptor.GetProvider(类型类型)在 System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider..ctor(类型 类型)在 System.Web.Mvc.ModelBinderDictionary.GetBinder(类型 modelType, IModelBinder fallbackBinder) 在 System.Web.Mvc.ControllerActionInvoker.GetModelBinder(参数描述符 参数描述符)在 System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext 控制器上下文,参数描述符参数描述符)在 System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext 控制器上下文,动作描述符动作描述符)在 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext 控制器上下文,字符串动作名称)在 System.Web.Mvc.Controller.ExecuteCore() 在 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
在 System.Web.Mvc.MvcHandler.c__DisplayClass6.c__DisplayClassb.b__5() 在 System.Web.Mvc.Async.AsyncResultWrapper.c__DisplayClass1.b__0() 在 System.Web.Mvc.MvcHandler.c__DisplayClasse.b__d() 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤, Boolean & completedSynchronously)
从堆栈跟踪中可以看出,它没有指向我们代码中的特定位置,因此难以调试。
任何防止遇到此异常的建议将不胜感激。
【问题讨论】:
-
您是否尝试过锁定哈希表,执行您的操作然后解锁它?备注下的第一个示例:msdn.microsoft.com/en-us/library/…
-
@Splash-X:整个堆栈跟踪都在框架代码中。
-
声明“当用户加载页面时”会有所帮助
-
这个错误是从应用程序池启动时发生在每个请求上,还是在应用程序池运行一段时间后发生?是否有特定的负载阈值(总请求数或每秒请求数?)导致它?您能否向我们提供有关您尝试在 Action 中绑定的模型的更多信息? NodeFor 方法在内部使用 WeakHashTable。添加新元素时,它确实会在表格上使用锁定。
-
你见过this blog post吗?
标签: asp.net-mvc asp.net-mvc-3 .net-4.0 load-balancing