Question

Un obscur puzzle, mais c'est la conduite m'a absolument fou:

Je me suis créer une Stratégie de Gestion des Informations sur la MOUSSE.J'ai mis en place IPolicyFeature, et ma politique fonctionnalité heureux de l'enregistrement lui-même par la configuration d'un nouveau SPItemEventReceiver.Tous les nouveaux articles dans ma bibliothèque de feu les événements comme ils le devraient, et tout fonctionne très bien.

IPolicyFeature possède également une méthode ProcessListItem, qui est censé appliquer rétroactivement la politique à des éléments qui étaient déjà présents dans la bibliothèque (au moins, il est censé le faire aussi longtemps qu'il conserve son retour true).Sauf qu'il n'est pas.Elle ne s'applique qu'à la politique de la première élément dans la bibliothèque, et je n'ai absolument aucune idée de pourquoi.

Il ne semble pas être le lancement d'une exception, et il n'a vraiment de retour véritable de traitement que le premier élément, et je ne peux pas penser à ce que d'autre à regarder.N'importe qui?

Edit:Cory réponse, ci-dessous, placez-moi sur la bonne voie.Quelque chose d'autre était, en effet, à défaut -- je n'ai pas trouver ce que, depuis mon windbg-fu n'est pas ce qu'elle devrait être, mais je soupçonne que c'était quelque chose comme "la modification d'une collection, tandis que c'est d'être itéré".Mon code est en train de modifier la SPListItem qui est passé dans ProcessListItem, et puis l'appel de SystemUpdate sur elle;dès que j'ai changé le code de sorte qu'il a créé sa propre variable (montrant exactement à la même SPListItem) et utilisés que les, le problème a disparu...

Était-ce utile?

La solution

Il ya seulement un couple de choses que je peux penser d'essayer.Tout d'abord, êtes-vous développer sur la zone où vous pourriez être en mesure d'utiliser Visual Studio pour déboguer?Donc, juste marcher à travers elle.

En supposant que ce n'est pas le cas - ce que je fais est le feu de WinDBG et de la joindre au processus juste avant je me suis inscrit à la politique.Tournez sur la première occasion des exceptions afin qu'il se casse à chaque fois qu'ils se produisent.vous pouvez le faire en lançant la commande "sxe clr" une fois qu'il est cassé dans.Voici un peu plus d'infos à propos de WinDBG:

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

Ce que je voudrais faire est puis regardez pour les exceptions de Première Chance d'être jeté, et en faire un !PrintException pour voir ce qui se passe.Ma conjecture est qu'il y a une exception levée quelque part qui est à l'origine de l'application pour arrêter de traiter les autres éléments.

Quelle est la logique ressembler pour votre ProcessListItem?Avez-vous essayé de faire juste un retour véritable à s'assurer qu'il fonctionne?

Autres conseils

Quelques belles idées, merci.Le débogueur Visual Studio n'était pas montrant une exception (et j'ai enveloppé le tout dans des blocs try/catch juste au cas où), mais je n'avais pas pensé à essayer de Windbg...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top