Archive for November, 2009

Nov 30 2009

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.

Comments Off

Nov 18 2009

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
    }
});

Comments Off

Nov 16 2009

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);

Comments Off

Nov 16 2009

SharePoint Systemkonto ändern

Um das Systemkonte im SharePoint zu ändern müssen Sie wie folgt vorgehen:

  1. Überprüfen Sie, dass das neue Systemkonto über genügend Berechtigungen auf dem SQL Server verfügt (minimum security administrator und dbcreator)
  2. Starten Sie die Kommandokonsole mit start > run > cmd
  3. Geben Sie in der Konsole folgendes ein: stsadm -o updateframcredentials -identitytype configurableid -userlogin DomainName\newUserName -password Password
  4. Überprüfen Sie nach dem erfolgreichem Abschluss, ob der Application Pool “SharePoint Central Administration V3″ den Service Accout übernommen hat. Diese Einstellung finden Sie im Tab Identity.
  5. Benötigen noch weitere Webapplikationen diesen Service Account, können Sie diesen in der Zentraladministration zuweisen. Diese Einstellung finden Sie unter Zentraladministration > Vorgänge > Dienstkonten. Wählen Sie den gewünschten Application Pool aus, und geben Sie die Logindaten für den Service Account ein.
  6. Damit SharePoint die Einstellungen in den Application Pools verwendet, ist am Schluss ein IIS Reset notwendig.

Comments Off

Nov 14 2009

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′>

Comments Off