Domanda

Un enigma oscuro, ma mi sta facendo impazzire:

Sto creando una politica di gestione delle informazioni personalizzata in MOSS.Ho implementato IPolicyFeature e la mia funzionalità di policy si registra felicemente configurando un nuovo SPItemEventReceiver.Tutti i nuovi elementi nella mia libreria attivano gli eventi come dovrebbero e tutto funziona correttamente.

IPolicyFeature ha anche un metodo ProcessListItem, che dovrebbe applicare retroattivamente la politica agli elementi che erano già nella libreria (almeno, dovrebbe farlo finché continua a restituire true).Ma non è così.Applica la politica solo a Primo elemento nella biblioteca e non ho assolutamente idea del perché.

Non sembra generare un'eccezione e restituisce davvero true dall'elaborazione del primo elemento e non riesco a pensare a cos'altro guardare.Chiunque?

Modificare:La risposta di Cory, di seguito, mi ha messo sulla strada giusta.Qualcos'altro stava effettivamente fallendo: non ho scoperto cosa, dal momento che il mio windbg-fu non è quello che dovrebbe essere, ma sospetto che fosse qualcosa come "modificare una raccolta mentre viene ripetuta".Il mio codice stava modificando SPListItem passato a ProcessListItem e quindi chiamando SystemUpdate su di esso;non appena ho modificato il codice in modo che creasse una propria variabile (che punta allo stesso identico SPListItem) e l'ho utilizzato, il problema è scomparso...

È stato utile?

Soluzione

Ci sono solo un paio di cose che mi vengono in mente da provare.Innanzitutto, stai sviluppando sulla scatola in cui potresti essere in grado di utilizzare Visual Studio per eseguire il debug?Quindi basta attraversarlo.

Supponendo che non sia così, quello che farei è avviare WinDBG e allegarlo al processo appena prima di registrare la politica.Attiva le eccezioni first chance in modo che si interrompano ogni volta che si verificano.puoi farlo emettendo il comando "sxe clr" una volta inserito.Ecco qualche informazione in più su WinDBG:

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

Quello che farei è quindi controllare che vengano lanciate eccezioni First Chance ed eseguire un !PrintException per vedere cosa sta succedendo.La mia ipotesi è che da qualche parte venga generata un'eccezione che causa l'interruzione dell'elaborazione degli altri elementi da parte dell'app.

Che aspetto ha la logica per il tuo ProcessListItem?Hai provato a fare semplicemente return true per assicurarti che funzioni?

Altri suggerimenti

Ci sono delle belle idee lì, grazie.Il debugger di Visual Studio non mostrava un'eccezione (e ho racchiuso tutto in blocchi try/catch per ogni evenienza), ma non avevo pensato di provare Windbg...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top