Base-64 문자 배열의 잘못된 Invalid 길이와 Base-64 문자열의 잘못된 문자의 맨 아래로 가려고했습니다.Viewstate invalid length error
사용자가 데이터베이스에서 3 초마다 요청하지 않으려 고하는 큰 데이터 덩어리를 저장하기 때문에 큰 ViewState입니다. 너무 커서 (일부 경우 4 메가) Gzip으로 압축하고 LoadPageStateFromPersistenceMedium() 및 SavePageStateToPersistenceMedium (ByVal pageViewState As Object)를 재정의하고 사용자 정의 viewstate를 작성합니다.
문제는 때로는 위의 오류가 발생합니다. 이 바닥에 도달하고, SavePageStateToPersistenceMedium을 호출 할 때 초기 View 상태 길이를 Session에 저장하고 LoadPageStateFromPersistenceMedium의 새로운 viewstate 길이와 비교하려고합니다. 내가 알아 차 렸던 것은 Viewstate의 길이가 심각하게 줄어들었고, 무엇이 이것을 일으킬 수 있는지 궁금합니다.
두 번째 문자열에 + 문자가 나타났습니다 (처음에 아무 것도 추가되지 않았는지 확인하려면 각 오른쪽의 10 개를 가져갔습니다). 또한 다른 사용자보다 한 사용자에게 더 많은 일이 일어나고 있습니다. 상대방이 처리하는 데이터에 문제가 있거나 시스템 (속도, 소프트웨어, 브라우저 등)에 물리적으로 연결되어 있음을 나타냅니다.
누구에게 아이디어가 있습니까? 또한 사용자에게 서비스를 제공하는 여러 개의 블레이드가 있으므로 하나에서 다른쪽으로 밀어 넣는 사용자가 될지 궁금해하고 있습니다.하지만이를 확인해야합니다.
나는 또한 렌더링과 관련 있다고 들었지만 viewstate가 렌더링 전에로드되었다고 생각 했습니까?
페이지 렌더링시이 데이터를 저장해야합니까? 당신의 설명에서 나는 캐시에서이 데이터를 코드에서 설정하고 가져오고 컨트롤의 페이지 레이아웃을 렌더링 할 필요가 없다면 Cache도 괜찮을 것이라고 생각합니다. ViewState는 작고 페이지에만 관련되어야합니다. 더 큰 데이터는 사용자 당 세션에 저장되거나 애플리케이션 당 캐시에 저장됩니다. –
@DavidePiras 나는 똑같은 생각을하고있었습니다. 나는 캐시를 사용하는 것이 더 빠르고 깨끗하다고 생각한다. 또한 ViewState 문제를 해결할 때 큰 부작용이 있습니다. – JefClaes
예.하지만 캐시는 응용 프로그램 전체에 적용됩니다. 저장하는 데이터가 연결된 모든 사용자마다 다르면 세션을 사용하십시오. –