문제

제가 관리하는 사이트 중 하나는 다음의 사용에 크게 의존하고 있습니다. ViewState (제 코드가 아닙니다.)그러나 특정 페이지에서는 ViewState 너무 부풀어 오르고 Safari는 "Validation of viewstate MAC failed" 오류.

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

도움이 되었습니까?

해결책 3

나는 이것에 대해 약간의 연구를 해왔고 그것이 원인인지 완전히 확신할 수는 없지만 Safari가 전체 결과 세트를 반환하지 않기 때문에(따라서 자르기) 때문이라고 생각합니다.

나는 다른 개발자와 토론 중이었고 채널 9에서 포스트백 문제와 페이지 크기를 피하면서 뷰 상태를 저장하기 위해 SQL 상태 서비스를 사용할 것을 권장하는 다음 게시물을 찾았습니다.

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

이것이 최선의 해결책처럼 보입니까?

다른 팁

저는 Channel 9 솔루션을 두 번째로 선택하지만 일부 호스팅 환경에서는 Safari가 상위 수준 브라우저로 간주되지 않는다는 점에 유의하세요.일부 ASP.Net 기능을 사용하려면 응용 프로그램의 browscap에 이를 추가해야 할 수도 있습니다.

이것이 ASP 메뉴 컨트롤을 사용하는 클라이언트 사이트에 대해 우리가 겪은 몇 가지 골치 아픈 문제의 근본 원인이었습니다.

첫 번째 호출은 페이지의 요소를 살펴보고 어떤 컨트롤이 있는지 확인하는 것입니다.

  1. ViewState를 꺼도 계속 작동합니다.
  2. 페이지 밖으로 이동하여 필요할 때 로드할 AJAX 호출로 이동할 수 있습니다.

이것이 실패하면 여기에 면책 조항이 있습니다. 저는 웹 사이트에서 이 솔루션을 사용한 적이 없습니다. 그러나 과거에는 제한된 대상 응용 프로그램에서 대규모 ViewState를 제거하고 싶었고 ViewState를 세션에 저장했습니다.

사용자 수에 비해 메모리에 대한 영향이 크지 않기 때문에 이 방법은 나에게 효과적이었지만 꽤 인기 있는 사이트를 운영하는 경우에는 이 접근 방식을 권장하지 않습니다.그러나 세션 솔루션이 Safari에서 작동하는 경우 항상 사용자 에이전트를 감지하고 적절하게 퍼지할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top