2010-05-26 7 views
0

우리는 우리의 오류 로그가 다음 오류 메시지와 함께 채우고 시작 가끔 .NET 3.5 웹폼 사이트에 문제가 발생하는 : 동일한 ID '로런타임 HttpException에 영향을 미치는 하나의 페이지/UserControl을

"여러 컨트롤을 ctl09 '가 발견되었습니다. FindControl은 컨트롤에 고유 ID가 있어야합니다. "

로컬로 디버깅하는 동안 본 적이 없으며 오류 로그에서 원격 디버깅 세션을 실행할 정도로 조심스럽게 잡아 본 적이 없으므로 예외에 대해 거의 알지 못합니다. 응용 프로그램 풀 재활용이 문제를 해결한다는 것을 알고 있습니다.

이것은 사이트의 [트래픽이 많은] 단일 페이지에만 영향을줍니다. 이상한 점은 사이트가 4.0 이전 ID 생성 논리를 사용한다는 것입니다. 따라서 페이지가 작동하면 전체보기 소스에 '자동'ID (예 : ctl09_someID_someOtherID)가 뒤에 오는 자동 생성 된 컨트롤 ID 접두어가 아닌 html 요소가 없습니다. 어떤 아이디어는 환영하지만

그래서, 2 개 차 질문 :

  1. 은 무엇 제대로 건설되고 무작위로 정지하는 제어를 구분 것인가?
  2. Global.asax 이외에 어떻게이 오류를 트랩하고 컨트롤을 강제로 다시 컴파일 할 수 있습니까? 앱 풀을 재활용 하시겠습니까?

나는 꽤 많이 혼란 스럽다. 내가 알고 있어요 각 컨트롤이 생성되는 경우

답변

0
  1. 아무것도까지 만 페이지 수명주기 또는 AJAX 포스트 백으로 interferring 외부 엔티티는 잠재적으로 다음하지 않습니다 '무작위', 차례로,이 원인이 없었다 중복 ID를 경험하십시오.

  2. 나는 이것이 실행 가능한 옵션이라고 생각하지 않습니다. 응용 프로그램 풀 재활용? 결코 그럴만한 이유가있을 수 있습니다.

아마도 더 많은 정보/코드가 유용할까요? 특정 페이지입니까? ViewState를 사용하고 있습니까? 'dodgy'컨트롤 ID에는 많은 이유가 있습니다.

+0

특정 페이지이며 뷰 상태에 데이터를 저장하는 서버 컨트롤 하나를 사용합니다. 실제로 ViewState 저장소를 제거하는 중입니다. 뷰 상태에 데이터를 저장하면 문제가 발생할 수 있습니다. – fordareh

+0

음, ViewState는 페이지를 게시 한 후에 컨트롤을 찾아야하므로 불일치가 있으면 폭탄이 터질 것입니다. 오류를 다시 생성 할 수 있습니까? – Mantorok

관련 문제