Не удалось удалить ContentType SharePoint 2010 "Используемый тип использования".
Я пробовал все рекомендации в Интернете, но безрезультатно.
Я написал консольное приложение в соответствии с этими инструкциями: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypecollection.delete.aspx
"Usages.Count" равно 0. Но когда он пытается удалить Content Type, я получаю Exception:
"Используется тип содержимого."
Это совершенно новая (разработка) установка. Я создал тестовый сайт в SP Designer, создал Content Type, а затем список. Затем я удалил список, удалил его из корзины и попытался удалить тип содержимого... Ugh.
Ответы
Ответ 1
Я был разочарован этой проблемой, пока не нашел ваш комментарий. Отличные советы.
- Удалить из корзины корзины.
- Удалить из коллекции сайтов > Настройки сайтa > Администрирование коллекции сайтов > Корзина.
- Удалить из элементов корзины конечного пользователя.
- Удалить из "Удалено из корзины конечных пользователей".
Это много переработки! После завершения я смог удалить тип содержимого.
Ответ 2
this powershell script сформировать этот post также работал у меня
$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()
Ответ 3
В дополнение к корзинам для переработки также есть страница под названием "Управление файлами, которые не проверяются в версии" в разделе "Разрешения и управление" в библиотеках документов, - файлы там также могут предотвратить удаление типа содержимого.
Ответ 4
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();
}
}
}
Создайте консольное приложение с указанным выше кодом и запустите этот проект. Этот код сообщит вам библиотеки, в которых используются типы контента. Затем просто зайдите в библиотеки и удалите прикрепленные типы содержимого. Затем, наконец, удалите тип контента из "Действия сайта" → "Настройки сайта" - "Типы содержимого сайта", или вы также можете использовать приведенный выше код, чтобы удалить тип содержимого.
Это сработало для меня, надеюсь, это может сработать и для вас!!!
Спасибо.
Ответ 5
Пожалуйста, проверьте следующую статью;
http://blog.bugrapostaci.com/2014/07/02/unable-to-delete-a-content-type/