Fehler bei der Installation von SP2

Problem:
Bei der Installation des Office Server 2007 Service Pack 2 tritt beim Konfiguration-Wizzard bei Schritt 4 ein Fehler auf. Der Wizzard meldet, dass der Registry Eintrag für die SharePoint Registration nicht vorhanden ist.

Ursache:
Der gesammte Key für die SharePoint Registration fehlt in den Registry-Einträgen (zu finden unter Office > 12 > Registration). Aus diesem Grund kann SharePoint nicht darauf zugreifen.

Lösung :
Exportieren Sie den Key von einem bereits exitierenden SharePoint Server und fügen sie diesen anschliessend auf dem betroffenen Server hinzu.

Security Exception beim Auslesen von Webs “site.webs()”

Problem:
Beim Auslesen von Webs aus einer Site kann ein Sicherheits-Issue auftretten.

Ursache:
Mit der Methode .webs() gibt SharePoint alle Webs aus der Site zurück. Da jedoch bei einem Webpart die Abfragen mit der Berechtigungsstufe des momentan angemeldeten Users durchgeführt werden. Tritt beim Zugriff auf das SPWeb Objekt eine Exception auf.

Lösung :
Um dieses Problem zu umgehen muss beim Auslesen von Webs wie folgt vorgegangen werden:

SPWebCollection webCollection = web.GetSubwebsForCurrentUser();
foreach(SPWeb subWeb in webCollection)
{
    // Handlung
}

Nachtrag:
Falls Sie jedoch das Auslesen der Webs erzwingen möchten können Sie das auch mit Impersonating erledigen. Ddie “RunWithElevatedPrivileges” Methode erlaubt Code mit Full Control auszuführen.

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    foreach(SPWeb subWeb in web.Webs)
    {
        // Code
    }
});

Alle Items in einer Liste löschen

Um alle Elemente in einer Liste im SharePoint zu löschen kann folgender Code verwendet werden:

SPListItemCollection listItemColl = list.Items;
foreach (SPListItem item in listItemColl)
{
    list.GetItemById(item.ID).Delete();
}

Nachtrag
Da im Objekt SPList mit dem Befehl .Items immer alle Elemente zurückgegben werden, kann diese Methode bei grossen Listen (Elemente > 2000) zu Exceptions vom Typ OutOfMemory führen. Deshalb empfiehlt es sich stets mit einem Query Elemente aus Listen abzufragen. Ebenso sollten Sie die Liste in mehreren Schritte und mittels Batch löschen.

SPQuery query = new SPQuery();
query.RowLimit = 100;

do
{
    // getItems
    SPListItemCollection items = web.Lists[setList].GetItems(query);

    // Batch erstellen
    StringBuilder batchString = new StringBuilder();

    batchString.Append("<?xml version="1.0" encoding="UTF-8"?><Batch>");

    foreach (SPListItem item in items)
    {
        batchString.Append("<Method>");
        batchString.Append("<SetList Scope="Request">" + Convert.ToString(item.ParentList.ID) + "</SetList>");
        batchString.Append("<SetVar Name="ID">" + Convert.ToString(item.ID) + "</SetVar>");
        batchString.Append("<SetVar Name="Cmd">Delete</SetVar>");
        batchString.Append("</Method>");
    }

    //close the batch section
    batchString.Append("</Batch>");

    //preform the batch
    web.ProcessBatchData(batchString.ToString());

    query.ListItemCollectionPosition = items.ListItemCollectionPosition;

} while (query.ListItemCollectionPosition != null);

SharePoint versendet keine Benachrichtigungen

Schon mehrmals bin ich auf das Problem gestossen, dass nach einem Restore einer SharePoint-Applikation in einer neuen Server-Farm die Benachrichtigungen nicht mehr korrekt funktionieren. Dabei trat das Problem wie folgt auf; Bestätigungen zur Einstellung bezüglich der abonnierten Benachrichtigungen wurden vom SharePoint korrekt versendet. Bei späteren Änderungen in der Liste oder Bibliothek sendete SharePoint jedoch keine Benachrichtigungen mehr.

Problem:

Das Alert-Template ist nicht mehr korrekt zugewiesen. Dieses kann mit dem STSADM erneut an die Web-Applikation angefügt werden. Anschliessend sollte SharePoint Benachrichtigungen wieder versenden können.

Vorgehen:

  1. Öffnen Sie die Konsole (cmd)
  2. Geben Sie in der Befehlszeile folgendes ein: stsadm -o updatealerttemplates -url <Applikation> -lcid <Sprache (English ’1033′>