Aus der Praxis – ErrorWebParts entfernen
avatar

Können ein oder mehrere Web Parts beim Öffnen einer SharePoint Seite nicht geladen werden, da z.B. die zugehörige Lösung nicht im SharePoint vorhanden ist, werden diese von SharePoint durch ErrorWebParts ersetzt. Dies war bei einem unserer Kunden der Fall, als bei einem Umstieg von SharePoint 2007 auf 2010 Inhaltsdatenbanken migriert wurden und auf der neuen Umgebung einige Lösungen nicht installiert waren.

Im Fall unseres Kunden wurden diese Lösungen und somit auch die Web Parts nicht mehr benötigt und sollten daher auch nicht in der neuen Umgebung installiert werden. Was also tun?

Eine Möglichkeit ist es, die betroffenen Seiten jeweils mit dem Parameter contents=1 zu öffnen und die ErrorWebParts dann von Hand zu löschen. Also z.B. mit dem Browser auf die URL http://portal/SitePages/Homepage.aspx?contents=1 und dort dann das entsprechende Web Part anhaken und auf Löschen klicken.

Wenn viele Seiten die veralteten Web Parts referenzieren, ist das natürlich aufwändig, daher bietet sich ein PowerShell Skript an. Grundsätzlich funktioniert dies so:

$web = Get-SPWeb $webUrl
$webpartmanager = $web.GetLimitedWebPartManager(
    $pageUrl,
    [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
$toDelete = $webpartmanager.Webparts | where { 
    $_.GetType().FullName -eq "System.Web.UI.WebControls.WebParts.ErrorWebPart" }
$toDelete | foreach { webpartmanager.DeleteWebpart($_) }
$web.Update()
$web.Dispose()

Dabei wird der Web Part Manager der Seite verwendet, die Web Parts nach dem vollqualifizierten Namen gefiltert und die so gefundenen Web Parts dann gelöscht.

3 Gedanken zu “Aus der Praxis – ErrorWebParts entfernen
avatar

  1. Pingback: Aus der Praxis – ErrorWebParts entfernen - SharePoint Blogs in German - Bamboo Nation

  2. Interessanter Ansatz. Man aber erwähnen, dass hier davon ausgegangen wird, dass alle „Fehler-WebParts“ genau die sind, die der Kunde auch nicht mehr haben möchte.

    Zusätzliche Spannung wird dann erzeugt, wenn es sich um Webseiten handelt, bei denen die Versionierung konfiguriert wurde. Dann muss man nämlich u.U. in alten Versionen das fehlerhafte WebPart entfernen. (Hierzu müsste man das PowerShell-Skript anpassen.)

    Viele Grüße aus Dresden,
    Axel

    • Hallo Herr Schneider,
      mein Codebeispiel löscht ja erst einmal nur die ErrorWebParts auf einer Seite, im Fall unseres Kunden haben wir tatsächlich alle ErrorWebParts auf allen Seiten gelöscht. Dies war auch gewünscht, da eine Migration nicht möglich ist, solange noch ErrorWebParts vorhanden sind. Mit dem Artikel möchte ich eine Hilfestellung geben, für Administratoren oder Entwickler, die vor einem ähnlichen Problem stehen, der Codeschnipsel muss dann natürlich noch an die konkrete Aufgabenstellung angepasst werden (z.B. ErrorWebParts auf allen Seiten löschen oder diese auch in versionierten Seiten löschen).

Schreibe einen Kommentar