Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

EventReceiver FeatureDeactivating does not fire

Folgendes Problem:

Ein EventReceiver, der beim Installieren einer Solution eine Aktion aus­führt, sollte diese Aktion beim Deinstallieren der Solution wie­der zurück­rol­len. Die ganze Installation (und Deinstallation) wurde über ein PowerShell-Skript im Windows PowerShell ISE ausgeführt.

Das Problem war, dass der Handler FeatureDeactivating des Feature (Scope: Farm) beim Deinstallieren nicht ansprang. Warum?

Features wer­den beim Deinstallieren der Solution nicht expli­zit deak­ti­viert. Der Handler kann also gar nicht ansprin­gen. So weit so trivial.

Meine Lösung war ein simp­ler zusätz­li­cher PowerShell-Aufruf, um das Feature vor dem Deinstallieren zu deak­ti­vie­ren. Und hier tritt jetzt mein eigent­li­ches Problem auf:

Disable-SPFeature -identity "cccccccc-ffff-4444-9999-ccaa555dd6d6" -URL $webAppUrl

Beim PowerShell-Aufruf (oben) wurde mein Handler nicht ausgelöst.

Ich pro­bierte es über die UI. Dort sprang der Handler ord­nungs­ge­mäß an. Was war also schief gelaufen?

Die Lösung fand ich hier.

Laut dem Autor die­ses Blogposts musste nur die PowerShell ISE neu gestar­tet wer­den. Bei mir funk­tio­nierte diese "Lösung" nicht auf anhieb. Erst am nächs­ten Tag nach dem zwei­ten oder drit­ten Neustart der ISE sprang der EventHandler dann auch beim FeatureDeactivating an und führte das Rollback ord­nungs­ge­mäß aus.

Fazit: Hartnäckigkeit zahlt sich mal wie­der aus. 🙂

Related Posts

Pin It on Pinterest