우리는 ASP.NET viewstate를 사용하여 자체 객체 (예 : 원시 유형)를 저장합니다. 우리가 빌드를 할 때마다 빌드 번호가 증가합니다. 우리가 주변에 일을하려고하는 문제는 서버 업데이트 중입니다 :ViewState 및 직렬화 된 객체 버전 관리
- 사용자는
- 우리는
사용자가 동일한 페이지에 다시 게시 원인이되는 웹 응용 프로그램의 새 빌드를 배포 페이지를로드하고, 예외가 throw됩니다.
- HttpException :이 페이지에 대한 상태 정보가 유효하지 않아 손상되었을 수 있습니다.
- ViewStateException : 잘못된 viewstate입니다.
- ArgumentException : 직렬화 된 데이터가 유효하지 않습니다.
- FileLoadException : 파일 또는 어셈블리 '[our assembly], 버전 = [새 버전], Culture = neutral, PublicKeyToken = ...'또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾아낸 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다
이 일어나는 이유를 이해 - viewstate가이 클래스의 이전 버전에 연재 한 후, 새 버전으로 직렬화하려고하는데 .NET 직렬화는이를 지원하지 않습니다.
데이터 멤버가 빌드간에 거의 항상 호환되므로 사용자 정의 PageStatePersister를 만들고 JSON을 사용하여 (그리고 암호화 한 다음) serialize/deserialize를 고려했습니다.
다른 아이디어?
David, 하지만 우리는 서버 팜을 가지고 있으므로 공유 세션 데이터베이스 나 (memcached와 같은) 분산 메모리 캐시를 설정하지 않는 한 세션이나 캐시에 저장하는 것은 옵션이 아닙니다.이 시점에서 우리는 실제로하고 싶지 않습니다. – joelsand