【问题标题】:MVC 4 - SessionStateItemCollection - Index was outside the bounds of the array - TempDataDictionaryMVC 4 - SessionStateItemCollection - 索引超出了数组的范围 - TempDataDictionary
【发布时间】:2018-05-28 18:08:09
【问题描述】:

我们经常从 MVC 框架中得到错误:

Index was outside the bounds of the array.    at System.Collections.ArrayList.get_Item(Int32 index)
   at System.Collections.Specialized.NameObjectCollectionBase.BaseRemove(String name)
   at System.Web.SessionState.SessionStateItemCollection.Remove(String name)
   at System.Web.HttpSessionStateWrapper.Remove(String name)
   at System.Web.Mvc.SessionStateTempDataProvider.LoadTempData(ControllerContext controllerContext)
   at System.Web.Mvc.TempDataDictionary.Load(ControllerContext controllerContext, ITempDataProvider tempDataProvider)
   at System.Web.Mvc.Controller.PossiblyLoadTempData()
   at System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
   at System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__2(AsyncCallback asyncCallback, Object asyncState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()

谷歌搜索这个错误不会产生很多信息......

在 web 应用程序的一部分中,我们将 sessionstate 行为设置为 Readonly 以提高加载多个图像的客户端性能。由于一些通用代码,我们还在这些请求中设置 MVC 临时数据。这会导致错误吗?

如果是这样,即使用户转到 Web 应用程序的其他区域,这是否也会导致错误持续存在? (就是这种情况) 如果不是,此错误还有哪些其他可能的原因?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 web-applications


    【解决方案1】:

    读取堆栈,似乎使用了 TempData; TempData 在重定向后销毁会话状态数据,因此下一步是通过SessionStateItemCollection.Remove 从会话中删除一个条目(调用以删除会话变量)。 SessionStateItemCollection 继承自 NameObjectCollectionBase,因此行项目 ArrayList(在该基类中)都是内部操作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2015-11-06
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多