내가 viewstate가와 F5 페이지 새로 고침 내 ASP.NET 응용 프로그램에서 문제에 봉착를로드하지 못했습니다.문제 - viewstate가
만약 내가 바로 F5를 공격 한 페이지에서 다른 페이지로 이동 한 후, 나는 다음과 같은 오류가 발생합니다 :
HttpException (0x80004005): Failed to load viewstate. The control tree
into which viewstate is being loaded must match the control tree that
was used to save viewstate during the previous request.
For example, when adding controls dynamically, the controls added during a
post-back must match the type and position of the controls added during
the initial request.]
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +310
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Page.LoadAllState() +439
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1092
점 :
System.InvalidCastException
"Unable to cast object of type 'System.Web.UI.Triplet'
to type 'System.Web.UI.Pair'."
이 페이지에 표시되는 다음과 같은 예외로 연결 실패한 상위 LoadViewState를 호출 할 때 사용자 정의 레이블 컨트롤에 대한 Overloaded LoadViewState 메서드에 있습니다.
System.Web.UI.WebControls.Label.LoadViewState(ByVal savedState As Object)
savedState 객체 대신 라벨 제어에 의해 예상 System.UI.Pair 오브젝트 중, System.Web.UI.Triplet 인 완전히 다른 제어 (드롭 다운리스트)이 될 것으로 보인다.
내가 같은 응용 프로그램에서 다른 페이지를 사용하여 정확히 같은 일을 할 경우, F5 다시 게시 후 좋은 페이지가로드. 두 웹 페이지는 동일한 기본 클래스에서 상속되며 동일한 사용자 지정 컨트롤을 사용합니다. 문제를 일으키는 페이지에는 동적으로 추가 된 컨트롤이 없습니다. LoadViewState 이벤트가 성공적으로로드 페이지에서 컨트롤에 대한 F5 다시 게시 후 해고되지 않는 것처럼
그것은 보이는 프로세스를 디버깅 가졌어요. SaveViewState는 두 경우 모두에서 실행됩니다.
어떤 아이디어 왜 LoadViewState 이벤트는 다른 한 페이지 해고가 아닌 것? 필자는 ASP.NET을 처음 접했을뿐 아니라 ViewState의 작동 방식에 대해서도 여전히 머리를 쓰고 있습니다.