« Lange vermißt und endlich ... | Main| Hey ... Alternative Zugriffszuordnungen im Sharepoint »

Eventhandler Sharepoint -> Geht es einfacher?

0
Kategorie   

Eventhandler schreiben ist nicht schwer,
deployen geht auch noch...

Wenn nur das andauernde Resetten des IIS nicht waere....

Ja ich weiß, kann man im Post-Build-Event einbinden!

Aber wer will das schon?

Ich hatte da eine andere Idee

Wie wäre es man bindet an die Listen einen "Default-Eventhandler", der dann bei Bedarf sich das Assembly holt und es einfach ausführt!

Diskussionen mit anderen Entwicklern ergaben, ich sollte meine Zeit nicht darauf verschwenden, da es nicht gehen würde, von wegen GAC und Aufruf von unsignierten Assemblies usw....

Also alle rieten mir ab

Na ja, da ich heute abend ein wenig Zeit hatte, habe ich mir gedacht, die anderen kochen doch nur mit Wasser und ich mit Hefeweizen....

Google-Maschine angeschmissen und schon ein paar Links gefunden..... Leider merkte ich relativ schnell, dass wenn man das Assembly direkt lädt. z.B. mit Assembly.LoadFrom, dann ist es gesperrt und man kann es nicht überschreiben, erst nach einem IIS - Reset....
War ja nicht im Sinne des Erfinders....  

Also Weizen auf und weiter....

Stieß dann auf den Artikel Modular Assemblies im .NET Developer Journal. Runtergeladen und Code angeschaut, scheint zu funktionieren.

Durch Zufall finde ich dann die Assembly.Load Methode, welche ein Byte-Array als Eingabe nimmt.

Habe mir gedacht, dass folgende Implementierung:

int commaIndex = typeString.IndexOf(",");
string className = typeString.Substring(0, commaIndex).Trim();
string assemblyName = typeString.Substring(commaIndex + 1).Trim();
Assembly assembly = null;
try {
   byte[ ] b = File.ReadAllBytes("C:\\EventHandler\\"+assemblyName+".dll");
   assembly = Assembly.Load(b);
   } catch {
   throw new ArgumentException("Can't load assembly " + assemblyName);
}
return assembly.GetType(className, false, false);


Dann doch eigentlich das Assembly nicht sperren dürfte und mit ein wenig Glück das Assembly in der AppDomain überschrieben werden müßte.

Kurz ausprobiert geht

Hier der Code, welcher bei jedem Event-Handler fast gleich aussieht

public override void ItemUpdated(SPItemEventProperties properties) {
        Type t = ResolveType("ItemEventReceiver," + properties.ListTitle);
        if (t != null) {
           SPItemEventReceiver spier = (SPItemEventReceiver) Activator.CreateInstance(t);
           spier.ItemUpdated(properties);
        }
     }


Bei meiner Implementierung bin ich davon ausgegangen, dass der Namespace der richtigen Event-Handler den Listen-Title enthalten und die Klasse der Eventhandler den Namen ItemEventReceiver hat!
Weiter habe ich die Annahme getroffen, dass die Assemblies der Eventhandler im Verzeichnis C:\EventHandler abgelegt werden.

Angehängt habe ich die Feature-Definition usw. muß dann natürlich noch der STRONG-NAME angepasst werden.

Gruß JJR
P.S.: Jetzt denke ich über eine Liste nach, in welcher man die Eventhandler konfigurieren kann!

Mach einen Kommentar

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2