Невозможно удалить SharePoint 2010 ContentType «Тип содержимого используется». - PullRequest
37 голосов
/ 21 июня 2011

Я перепробовал все рекомендации в Интернете, но безрезультатно.

Я написал консольное приложение в соответствии с этими инструкциями: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypecollection.delete.aspx

«Usages.Count» = 0. Тем не менее, когда он пытается удалить тип контента, я получаю исключение:

"Тип контента используется."

Это новая (разрабатываемая) установка. Я создал тестовый сайт в SP Designer, создал тип контента, а затем список. Затем я удалил список, удалил его из корзины и попытался удалить тип содержимого ...... Тьфу.

Ответы [ 4 ]

72 голосов
/ 06 июля 2011

Я был разочарован этой проблемой, пока не нашел ваш комментарий. Отличный совет.

  1. Удалить из корзины сайта.
  2. Удалить из семейства сайтов> Настройки сайта> Администрирование семейства сайтов> Корзина.
  3. Удалить из элементов корзины конечного пользователя.
  4. Удалить из «Удалено из корзины конечного пользователя».

Это много утилизации! После завершения я смог удалить тип контента.

6 голосов
/ 24 апреля 2015

В дополнение к корзинам утилизации имеется также страница «Управление файлами, которые не отмечены в версии» в разделе «Разрешения и управление» в библиотеках документов - файлы в них также могут предотвращать удаление типа содержимого.

6 голосов
/ 03 декабря 2013

этот скрипт PowerShell из этой публикации также работал для меня

$siteURL = "The Site url"
$contentType = "Content type Name"

$web = Get-SPWeb $siteURL
$ct = $web.ContentTypes[$contentType]

if ($ct) {
$ctusage = [Microsoft.SharePoint.SPContentTypeUsage]::GetUsages($ct)
      foreach ($ctuse in $ctusage) {
        $list = $web.GetList($ctuse.Url)
        $contentTypeCollection = $list.ContentTypes;
        $contentTypeCollection.Delete($contentTypeCollection[$ContentType].Id);
        Write-host "Deleted $contentType content type from $ctuse.Url"
        }
$ct.Delete()
Write-host "Deleted $contentType from site."

} else { Write-host "Nothing to delete." }

$web.Dispose()
0 голосов
/ 30 марта 2012
 

    using System;
    using System.Collections.Generic;
    using Microsoft.SharePoint;

    namespace Test
    {
       class ConsoleApp
       {
          static void Main(string[] args)
          {
             using (SPSite siteCollection = new SPSite("http://localhost"))
             {
                using (SPWeb webSite = siteCollection.OpenWeb())
                {
                   // Get the obsolete content type.
                   SPContentType obsolete = webSite.ContentTypes["Test"];

                   // We have a content type.
                   if (obsolete != null) 
                   {
                      IList usages = SPContentTypeUsage.GetUsages(obsolete);

                      // It is in use.
                      if (usages.Count > 0) 
                      {
                         Console.WriteLine("The content type is in use in the following locations:");
                         foreach (SPContentTypeUsage usage in usages)
                            Console.WriteLine(usage.Url);
                      }

                      // The content type is not in use.
                      else 
                      {

                         // Delete it.
                         Console.WriteLine("Deleting content type {0}...", obsolete.Name);
                         webSite.ContentTypes.Delete(obsolete.Id);
                      }
                   }

                   // No content type found.
                   else 
                   {
                      Console.WriteLine("The content type does not exist in this site collection.");
                   }
                }
             }
             Console.Write("\nPress ENTER to continue...");
             Console.ReadLine();
          }
       }
    }

 

Создайте консольное приложение с приведенным выше кодом и запустите этот проект.Этот код расскажет вам о библиотеках, к которым прикреплены типы контента.Затем просто зайдите в эти библиотеки и удалите прикрепленные типы контента.Затем, наконец, удалите тип контента из Действия сайта -> Настройки сайта -> Типы контента сайта, или вы также можете использовать вышеуказанный код, чтобы удалить тип контента.

Это сработало для меня, надеюсь, оно также может работать на вас!!!Спасибо.

...