MOSS 2007 Event-Receiver und Office 2010 Applikationen

Das Problem tritt in folgenden beiden Konstellation auf:

Moss 2071

a) Ein Benutzer speichert aus einer Office 2010-Anwendung heraus direkt mit dem "Speichern-Unter"-Dialog nach MOSS 2007

b) Ein Benutzer öffnet in Sharepoint mit "Aktionen" - "Im Windows Explorer öffnen" die WebDav-Ansicht des Explorers und legt hier Dateien z. B. per Drag & Drop aus Outlook ab.

Dabei wird Sharepoint-intern der ItemAdded-EventReceiver bereits abgefeuert, wenn die hochzuladende Datei noch gar nicht auf dem Server angekommen ist. Das macht Probleme, wenn man im Event-Receiver die Datei auslesen will - denn die ist zu diesem Zeitpunkt schlichtweg null.

Folgende kleine Hilfsroutine sorgt dafür, dass der EventReceiver auf das Ende der Datenübertragung wartet:

public override void ItemAdded(SPItemEventProperties properties)
{
    using (SPWeb web = properties.OpenWeb())
    {
        this.DisableEventFiring();
        SPListItem wItem = this.WaitForFileUpload(properties.ListItem);

 

private SPListItem WaitForFileUpload(SPListItem item)
{
    while (item.File == null || item.File.Length == 0)
    {
        System.Threading.Thread.Sleep(300);
        item = item.ParentList.GetItemById(item.ID);
    }
    return item;
}
Geschrieben von am 03.07.2012, 14:32

Kommentar verfassen

Ihre Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *