Maximum number of Web Parts for all zones exceeded

Problem

A user tries to access / create / modify a personal view and receives the following message:

Cause

The user has created too many personal views. With personal views, SharePoint actually adds each view as a web part on the page. If a user has 10 personal views, there are actually 10 web parts on the page, 9 of which are hidden depending on the personal view selected. When SharePoint reaches the default maximum of 50 web parts on the page, it will throw the above error.

Solution

There is no way for you or the user to delete personal views individually. You can remove the user’s access to the site and re-add them again but this will wipe all their personal views.

The best solution I found was to temporarily bump the MaxZonePart attribute under the web.config file to a higher value, get the user to delete some views and reset it back again.

Here are the steps:

  1. Log in to each WFE and open the IIS Manager.
  2. Locate the site where the user is having the issue -> Explore
  3. Open the web.config file in notepad or other text editor.
  4. Look for the line: <WebPartLimits MaxZoneParts=”50″ PropertySize=”1048576″ />
  5. Change the MaxZoneParts=”50″ limit to a higher value, like MaxzoneParts=”100″.
  6. Save the file
  7. Do an iisreset /noforce on the WFE.
  8. Repeat the above steps for each SharePoint web front end.

 

Tags: ,

One Response to “Maximum number of Web Parts for all zones exceeded”

  1. AlexSeliv November 4, 2016 at 9:18 pm #

    Andrew, thank you for explanation!

    Regarding getting personal views by administartor, there is another approach using PowerShell:

    $site = Get-SPSite “http://sp2013”
    $user = $site.RootWeb.AllUsers.GetByEmail(“user@email.com”)
    $token = $user.UserToken

    # If you are using Web object instead if Site object, then instead of $site.Url use $web.Site.Url ($web.Url doesn’t work even for RootWeb)
    $impWebObj = New-Object Microsoft.SharePoint.SPSite($site.Url, $token)
    $list = $impWebObj.RootWeb.Lists[“My List”]

    # Show all personal views in a grid
    $list.Views | where { $_.PersonalView -eq $true } | Out-GridView

    # Delete view by it’s ID ($list.Update() is not necessary)
    $list.Views.Delete()

Leave a Reply

%d bloggers like this: