문제

모호한 퍼즐이지만 나를 완전히 미치게 만듭니다.

MOSS에서 사용자 지정 정보 관리 정책을 만들고 있습니다.IPolicyFeature를 구현했으며 새 SPItemEventReceiver를 구성하여 내 정책 기능이 자동으로 등록되었습니다.내 라이브러리의 모든 새 항목은 이벤트를 정상적으로 실행하며 모두 정상적으로 작동합니다.

IPolicyFeature에는 이미 라이브러리에 있는 항목에 소급하여 정책을 적용하도록 되어 있는 ProcessListItem 메서드도 있습니다(적어도 반환이 계속되는 동안에는 그렇게 해야 합니다). true).그렇지 않다는 점을 제외하면.정책은 다음에만 적용됩니다. 첫 번째 도서관에 항목이 있는데 왜 그런지 전혀 모르겠습니다.

예외가 발생하지 않는 것 같고 첫 번째 항목을 처리하면 실제로 true를 반환하므로 더 살펴봐야 할 것이 없습니다.누구나?

편집하다:아래 Cory의 답변은 나를 올바른 길로 인도했습니다.뭔가 다른 것이 실제로 실패했습니다. 내 windbg-fu가 원래대로 되지 않았기 때문에 무엇인지는 알 수 없었지만 "반복되는 동안 컬렉션을 수정하는 것"과 같은 것이 아닐까 의심됩니다.내 코드는 ProcessListItem에 전달된 SPListItem을 수정한 다음 이에 대해 SystemUpdate를 호출했습니다.자체 변수(정확히 동일한 SPListItem을 가리키는)를 생성하고 이를 사용하도록 코드를 변경하자마자 문제는 사라졌습니다.

도움이 되었습니까?

해결책

시도해 볼 수 있는 것이 몇 가지밖에 없습니다.첫째, Visual Studio를 사용하여 디버깅할 수 있는 환경에서 개발하고 있습니까?그러니 그냥 넘어가세요.

그렇지 않다고 가정하면, 제가 할 일은 WinDBG를 실행하고 정책을 등록하기 직전에 프로세스에 연결하는 것입니다.첫 번째 예외가 발생할 때마다 중단되도록 첫 번째 예외를 설정합니다.일단 침입되면 "sxe clr" 명령을 실행하여 이를 수행할 수 있습니다.WinDBG에 대한 추가 정보는 다음과 같습니다.

http://blogs.msdn.com/tess/archive/2008/06/05/setting-net-breakpoints-in-windbg-for-applications-that-crash-on-startup.aspx

그런 다음 내가 할 일은 First Chance 예외가 발생하는지 관찰하고 !PrintException을 수행하여 무슨 일이 일어나고 있는지 확인하는 것입니다.내 생각에는 앱이 다른 항목 처리를 중지하게 만드는 예외가 어딘가에 발생하는 것 같습니다.

ProcessListItem의 논리는 어떤 모양입니까?제대로 작동하는지 확인하기 위해 true를 반환해 보셨나요?

다른 팁

거기에 좋은 아이디어가 있습니다. 감사합니다.Visual Studio 디버거에서는 예외가 표시되지 않았지만(만약에 대비해 모든 것을 try/catch 블록에 래핑했습니다) Windbg를 시도해 볼 생각은 없었습니다...

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