2017-12-14 3 views
0

우리는 정기적으로 MVC 프레임 워크 내에서 오류를 얻을 : 많은 정보를 얻을하지 않습니다MVC 4 - SessionStateItemCollection - 인덱스 배열의 범위를 벗어난 - TempDataDictionary

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() 

이 오류를 인터넷 검색 ...

웹 응용 프로그램의 한 부분에서 세션 상태 동작을 Readonly로 설정하여 여러 이미지를로드하는 클라이언트 측 성능을 향상 시켰습니다. 일부 일반적인 코드로 인해 이러한 요청에 MVC tempdata도 설정됩니다. 이것이 오류의 원인 일 수 있습니까?

이렇게하면 사용자가 웹 응용 프로그램의 다른 영역으로 이동하더라도 오류가 계속 발생할 수 있습니까? (해당 경우) 그렇지 않은 경우이 오류가 발생할 수있는 다른 원인은 무엇입니까?

답변

0

스택을 읽으면 TempData가 사용 된 것처럼 보입니다. TempData는 리디렉션 후에 세션 상태 데이터를 파괴하므로 다음 단계는 세션 변수를 제거하기 위해 호출 된 SessionStateItemCollection.Remove을 통해 Session에서 항목을 제거하는 것입니다. SessionStateItemCollection은 NameObjectCollectionBase에서 상속되므로 (기본 클래스 내부의) ArrayList라는 항목은 모두 내부 작업입니다.

관련 문제