Хорошо, мой макет страницы работает, вот шаги, которые я предпринял, если это будет полезно:
1 Редактирование макета страницы в режиме обслуживания страницы веб-части:
http://<server name>/_catalogs/masterpage/<page name>.aspx?contents=1
Удалить все экземпляры веб-частей оттуда.
2 Откройте макет (на сервере) в Designer и убедитесь, что WebPartZone / ZoneTemplate пусты. После проверки убедитесь, что макет страницы настроен на утверждение.
После этого можно использовать макет страницы - я смог без проблем удалить и переустановить свой макет страницы.
Похоже, что определения веб-частей остались в базе данных, поэтому, когда функция обновляется / переустанавливается, они уже связаны с зоной страницы / веб-части. Разбираться с этим, вероятно, следует в коде в функции получения функций в макете страницы, если я когда-нибудь найду это, я опубликую это где-нибудь ...