2009-08-25 3 views
2

При попытке отредактировать страницу на сайте SharePoint я получаю сообщение об ошибке. Использование WinDbg я вижу, что фактическая ошибка:Как определить небезопасную веб-часть/элемент управления

Microsoft.SharePoint.ApplicationRuntime.SafeControls+UnsafeControlException

Это смотрит на меня, как у меня есть элемент управления на странице, которая не включена в <SafeControls> раздел web.config. Я просмотрел файл aspx для страницы, но я не вижу никаких элементов управления, которые не имеют ссылки в web.config.

Рытье немного глубже (и с помощью Sosex.dll) я получил следующие данные стека вызовов, которые приводят к ошибке:

0:013> !mframe 03 
0:013> !mdv 
Frame 0x3: (Microsoft.SharePoint.ApplicationRuntime.SafeControls.GetTypeFromGuid(System.Guid)): 
[A0]:this:0xc00c03e8 (Microsoft.SharePoint.ApplicationRuntime.SafeControls) 
[A1]:guid:{ef2d8253-a451-56da-be1d-5f32d5227173} VALTYPE (MT=0000064278430ea8, ADDR=000000000308caa0) (System.Guid) 
[L0]:null (System.Type) 
[L1]:0x633c50 (System.String) STRVAL=The type could not be found or it is not registered as safe. 
[L2]:null (System.Type) 

Так это выглядит, как я нашел GUID элемент управления ([ A1]), что вызывает проблему. Как бы то ни было, я не знаю, как найти, какой контроль этот GUID ссылается. Должна быть таблица где-нибудь в SQL Server, где хранится эта информация? Я уже пробовал dbo.WebParts, выбрав против tp_ID с GUID, но ничего не нашел. Наверное, я что-то упустил?

+0

Если вы работаете с WinDbg, предположительно, вы проверили журналы ULS и Event Viewer и ничего не нашли? –

+0

Если честно, я пропустил шаг проверки журнала и журнала событий ULS. Я вернусь и проверю их, на всякий случай, если есть что-то полезное. –

ответ

0

Для управления веб-частей в программе, вы можете использовать SPLimitedWebPartManager

См this article найти идею о том, как вы бы удалить или найти веб-части со страницы.

С отладчиком должно быть достаточно легко перечислить все эти веб-страницы и просто увидеть соответствующий DisplayTitle для вашего идентификатора.

2

Ого! Назад медленно от SQL Server;)

Первое, что нужно посмотреть, это difference between a closed web part and a deleted web part.

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

Если это проблема, то простой способ удалить его - поставить ? Contents = 1 в конце URL-адреса, и страница откроется в режиме обслуживания.

Надеюсь, что этот хеллп!

0

Использование отражателя я нашел это, как они генерируют GUID для каждого элемента управления:

internal static Guid GetTypeId(MD5HashProvider md5Provider, Type type, string assemblyName) 
{ 
    byte[] bytes = new UnicodeEncoding().GetBytes(assemblyName + "|" + type.FullName); 
    return new Guid(md5Provider.GetHash(bytes)); 
} 

Так что, если вы действительно хотите, чтобы найти его, запустить через каждую сборку и типа и соответствовать GUID. Удачи. У меня такая же проблема. Я планирую удалить один элемент управления за один раз, пока не зафиксирую его.

 Смежные вопросы

  • Нет связанных вопросов^_^