Frage

Ein obskures Rätsel, aber es macht mich absolut wahnsinnig:

Ich erstelle eine benutzerdefinierte Informationsverwaltungsrichtlinie in MOSS.Ich habe IPolicyFeature implementiert und meine Richtlinienfunktion registriert sich problemlos durch die Konfiguration eines neuen SPItemEventReceiver.Alle neuen Elemente in meiner Bibliothek lösen die Ereignisse so aus, wie sie sollten, und alles funktioniert einwandfrei.

IPolicyFeature verfügt außerdem über eine Methode ProcessListItem, die die Richtlinie rückwirkend auf Elemente anwenden soll, die sich bereits in der Bibliothek befanden (zumindest soll dies so lange geschehen, wie sie immer wieder zurückkehrt). true).Außer dass es das nicht tut.Die Richtlinie wird nur auf die angewendet Erste Artikel in der Bibliothek, und ich habe absolut keine Ahnung, warum.

Es scheint keine Ausnahme auszulösen, und es gibt tatsächlich „true“ zurück, wenn das erste Element verarbeitet wird, und ich kann mir nicht vorstellen, was ich mir sonst noch ansehen soll.Irgendjemand?

Bearbeiten:Corys Antwort unten hat mich auf den richtigen Weg gebracht.Etwas anderes ist in der Tat fehlgeschlagen – ich habe nicht herausgefunden, was, da mein windbg-fu nicht das ist, was es sein sollte, aber ich vermute, es war so etwas wie „Ändern einer Sammlung, während sie iteriert wird“.Mein Code hat das SPListItem geändert, das an ProcessListItem übergeben wurde, und dann SystemUpdate dafür aufgerufen.Sobald ich den Code so geändert hatte, dass er eine eigene Variable erstellte (die auf genau dasselbe SPListItem zeigte) und diese verwendete, verschwand das Problem ...

War es hilfreich?

Lösung

Mir fallen nur ein paar Dinge ein, die ich ausprobieren könnte.Erstens: Entwickeln Sie auf der Box, in der Sie möglicherweise Visual Studio zum Debuggen verwenden können?Also einfach durchgehen.

Vorausgesetzt, das ist nicht der Fall, würde ich WinDBG starten und es an den Prozess anhängen, kurz bevor ich die Richtlinie registriert habe.Aktivieren Sie Ausnahmen der ersten Chance, damit die Funktion bei jedem Auftreten unterbrochen wird.Sie können dies tun, indem Sie den Befehl „sxe clr“ eingeben, sobald es eingebrochen ist.Hier sind ein paar weitere Informationen zu WinDBG:

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

Was ich dann tun würde, wäre, darauf zu achten, dass First-Chance-Ausnahmen ausgelöst werden, und eine !PrintException auszuführen, um zu sehen, was vor sich geht.Ich vermute, dass irgendwo eine Ausnahme ausgelöst wird, die dazu führt, dass die App die Verarbeitung der anderen Elemente stoppt.

Wie sieht die Logik für Ihr ProcessListItem aus?Haben Sie versucht, einfach einen return true auszuführen, um sicherzustellen, dass es funktioniert?

Andere Tipps

Da sind ein paar nette Ideen dabei, danke.Der Visual Studio-Debugger zeigte keine Ausnahme an (und ich habe für alle Fälle alles in Try/Catch-Blöcke verpackt), aber ich hatte nicht daran gedacht, Windbg auszuprobieren ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top