2008-08-04 5 views
11

내가 유지 관리하는 사이트 중 하나는 ViewState (내 코드가 아님)의 사용에 크게 의존합니다. 그러나 ViewState이 과장된 특정 페이지에서 Safari는 "Validation of viewstate MAC failed" 오류가 발생합니다.ViewState는 Safari에서만 유효합니다.

이것은 Safari에서만 발생하는 것으로 보입니다. Firefox, IE 및 Opera 모두 동일한 시나리오에서 성공적으로로드됩니다.

답변

1

나는 이것에 대한 약간의 연구를 해왔고 사파리가 전체 결과 집합을 반환하지 않기 때문에 그 원인이 확실하지는 않다.

저는 다른 개발자와 의견을 같이하고 채널 9에서 다음 게시물을 발견했습니다. 포스트 백 문제와 페이지 크기를 피하기 위해 viewstate를 저장하는 SQL 상태 서비스를 사용하는 것이 좋습니다.

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

이 최선의 해결책처럼 보이는가?

3

전화의 나의 첫번째 포트는 페이지의 요소를 통해 이동 제어하는 ​​참조하는 것입니다 :

    내가
  1. 페이지에서 그리고로 이동 될 수 오프 viewstate가 전환 할 때
  2. 여전히 작동합니까 필요한 경우로드 될 AJAX 호출

실패 및 여기에 면책 조항이 있습니다. 웹에서 사이트를 사용할 때이 솔루션을 사용하지는 못했지만, 이전에는 대규모 ViewState를 제거하고 싶었던 과거에는 제한된 잠재 고객 애플리케이션 ViewState를 세션.

메모리 사용량이 사용자 수에 중요하지 않기 때문에 나에게 도움이되었지만, 꽤 인기있는 사이트를 운영하고 있다면이 방법을 권장하지 않습니다. 그러나 세션 솔루션이 Safari에서 작동하는 경우 사용자 에이전트를 항상 감지하고 적절하게 퍼지 할 수 있습니다.

4

내가 채널 9 솔루션을 사용하는 동안 일부 호스팅 환경에서는 Safari가 상위 레벨 브라우저로 간주되지 않습니다. 일부 ASP.Net 기능을 사용하려면 응용 프로그램의 browscap에 추가해야 할 수도 있습니다.

ASP 메뉴 컨트롤을 사용하는 클라이언트 사이트에 대한 두통의 근본 원인이었습니다.