我在 iis7 上运行的 ASP.NET MVC 代码中随机出现两个异常:
Exception type: InvalidOperationException
Exception message: Collection was modified; enumeration operation may not execute.
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.List'1.Enumerator.MoveNextRare()
at System.Collections.Generic.List'1.Enumerator.MoveNext()
at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context)
at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
and
Exception type: NullReferenceException
Exception message: Object reference not set to an instance of an object.
at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context)
at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
它不能始终如一地重现,但我认为它正在改变(或损坏)RouteTable.Routes
。我唯一能进入的地方RouteTable.Routes
在我的项目中是Global.asax.cs
我知道那里的代码只被调用一次,所以这不是问题。关于如何追踪它有什么想法吗?
就我而言,它最终成为一个 HttpModule:Ext.Direct.Mvc http://www.extjs.com/forum/showthread.php?p=347906#post347906(用于 ASP.NET MVC 的 Ext.Direct)。该模块有一个错误(在版本 0.8.0 中已修复),每次为 IHttpModule 调用 Init() 时都会重新注册路由。 (可能会被多次调用 http://ayende.com/Blog/archive/2006/09/10/MoreHttpModulesStrangeness.aspx)。如果时机正确的话,它会破坏RouteTable.Routes
集合,并导致上述两个异常之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)