2014-03-05 1 views
0

나는 우리의 웹 앱 단계의 특정 설정에 따라 다소 표준 이벤트 유효성 검사 오류를 얻고있다 없습니다 :페이지 이벤트 검증 실패가 하나의 환경에서 발생하지만, 다른

Application_Error intercepted exception: Exception of type 'System.Web.HttpUnhandledException' was thrown. 
System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentException: Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation. 

진짜 headscratcher는이 때문이다 테스트 환경에서 발생하지만 재 작성을 시도 할 때 내 개발 환경에서는 발생하지 않습니다. 필자는 web.config를 변경하여 변경되었을 수있는 것들을 살펴 봤지만 점프 아웃은 보이지 않습니다. 이 코드는 환경간에 완전히 동일합니다. TeamCity에서 그 점을 분명히했습니다. 따라서 환경 문제를 강력하게 의심하고 있지만 이벤트 확인과 같은 것으로 시작해야 할 부분은 거의 없습니다. 이는 일반적으로 코드로 처리됩니다.

경로에 대해 조사 할 사람이 있습니까? 내가하는 일의 세부 사항 중 일부는 드문 드문 드문 현상이지만 개발 환경에서는 모든 것이 100 % 정상적으로 작동하고 전혀 문제가 없기 때문에 어떤 것이 관련성이 있고 어떤 것이 좋을지 모르겠다. 티. 더 자세한 정보가 필요하면 부탁드립니다. 제공 해줘서 기쁩니다.

+0

웹 응용 프로그램이 서버에서 실행중인 동일한 .NET 버전을 대상으로합니까? – James

+0

@James : 예. 그것은 제가 꽤 빨리 확인한 것입니다. 잘 부탁드립니다. – tmesser

답변

0

후손을 위해, 이것은 상황이었다.

HTTPWebSession 캐시의 정보를 통해 채워지는 몇 가지 드롭 다운 목록이 있습니다. 큰. 우리는 또한 작업 흐름 중 한 지점에서 AJAX 부분 포스트 백을 사용합니다. 왜냐하면 화면의 모든 것을 망쳐 놓지 않고 사용자 입력에 대한 서버 측 유효성 검증을해야하기 때문입니다. 여전히 문제 없습니다.

이 부분 포스트 백이 반환되고 프로젝트에 더 이상 존재하지 않는 이미지로 연결되는 일부 CSS 클래스를 사용하려고하면 문제가 발생합니다. 이미지가 옮겨졌습니다. 그러면 404가 반환됩니다. 코드가 실제로 이러한 이미지를 사용하지 않는 한 문제가되지 않는다고 생각할 수 있습니다. 그리고 그렇지 않습니다.

문제는 우리의 테스트 환경에서 404가 404라는 것입니다. 문제는 간단히 반환됩니다. 프로덕션 환경에서는 404 오류를 로그인 페이지로 리디렉션합니다. 이는 사용자 경험이 좋지 않아 무엇이 존재하는지, 존재하지 않는지를 암시 적으로 드러내는 것이 좋지 않기 때문입니다. 이것이 환경 요인입니다.

... 우리는 높은 보안 환경에서 작업하기 때문에 로그인 페이지는 캐시를 PreRender의 일부로 지우므로 실제로 페이지 그래픽을로드하고 있는지 여부는 중요하지 않습니다. Ergo, AJAX 부분 포스트 백이 캐시를 삭제하여 드롭 다운 목록에 세션로드 된 정보를 만들었습니다. 이는 부분적인 포스트 백으로 업데이트되지 않았습니다! - 예상 입력이 아닙니다. 그리고 완벽하게 합리적으로, 이벤트 유효성 검사는 전체 페이지 제출에서이 입력을 허용하지 않았습니다.

이 이상하고 복잡한 문제는 CSS 클래스를 삭제하여 해결되었습니다.

1

아마도 config 파일에서 enableEventValidation 속성을 확인했을 것입니다. 기본적으로 이것은 존재하지 않을 것입니다. 그러나 하나 또는 두 시스템의 machine.config에있을 수 있으므로 해당 옵션의 구성이 달라집니다.

+0

이 경우에는 해당되지 않지만 영리한 관찰 결과입니다. 감사! – tmesser

관련 문제