Веб-часть Sharepoint: тип не найден/зарегистрирован как безопасный
у меня есть веб-часть SharePoint (по сути, просто приложение "Hello World"), которое я только что создал, и у меня проблема с его развертыванием. Я подписал .dll, создал .dwp, и зарегистрировал его как безопасный элемент управления в интернете.конфиг. Я могу добавить его в коллекцию веб-частей и добавить детали для него; однако, когда я пытаюсь добавить его на страницу, Я получаю следующую ошибку:
веб-часть или элемент управления веб-формы на этом Страница не может быть отображена или импортные. Тип может не нашли или это не зарегистрирован как безопасный.
ниже мой .файл ПРД:
<?xml version="1.0"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=################</Assembly>
<TypeName>MyWebParts.SimpleWebPart</TypeName>
<Title>My Simple Web Part</Title>
<Description>A simple Web Part</Description>
</WebPart>
и запись, которую я добавил в web.config:
<SafeControl Assembly="SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=################" Namespace="MyWebParts" TypeName="*" Safe="True" />
Я также попытался использовать подстановочные знаки для пространства имен, что не помогло. Я даже пробовал установить сеть.config trust level to "Full" (чего я бы никогда не сделал в производстве, но попытался сузить проблему) и все равно не повезло. Есть идеи? Спасибо.
10 ответов
развертываете ли вы webpart с помощью решения SharePoint (.WSP-файл)? Проверьте WSPBuilder Если вы не. Мы также использовать Установки SharePoint между ними, многие проблемы (будь то из-за человеческой ошибки или иначе) в развертываниях, как ваша проблема, были решены в нашей среде.
одна из возможностей заключается в том, что имена типов не были синхронизированы с .файл webpart. Для экс.
на .WebPart в:
<?xml version="1.0" encoding="utf-8"?>
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Namespace.Class1, $SharePoint.Project.AssemblyFullName$" />
и .cs:
namespace Namespace
{
public class Class2 : WebPart
и SharePointProjectItem.spdata по:
<SafeControl Assembly="Class2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9385058ce1ee51a9" Namespace="Namespace" TypeName="*" Safe="True" SafeAgainstScript="False" />
вы получаете идею: тройная проверка согласованности имен во всех артефактах проекта.
убедитесь, что у вас есть класс веб-части как Public, может показаться глупым, но я столкнулся один раз. Также попробуйте заполнить веб-часть из галереи веб-частей .
Я также видел эту проблему, когда я изменил пространство имен для моей сборки WebPart, и пространство имен не было обновлено во всех исходных файлах в решении.
хорошо, это может быть очень поздно, но будет полезно для остальных. Я создал веб-часть и получил сообщение об ошибке "веб-часть или элемент управления веб-формы на этой странице не могут быть отображены или импортированы. Тип не найден или не зарегистрирован как безопасный."
Я понял, что использую диаграмму внутри этой веб-части, и как только я удалил ссылку на диаграмму, она сработала. Таким образом, элемент управления Chart также должен быть отмечен как typesafe.
убедитесь, что все ссылки в webpart безопасны для типов.
обычно это происходит при изменении имени веб-части с VisualWebPart1 на MyNewWebPart. После выполнения поиска и замены по всему решению переименуйте все файлы и папки с помощью VisualWebPart1 в MyNewWebPart. Проблема вызвана файл SharePointProjectItem.spdata не обновляется. Откройте SharePointProjectItem.spdata и заменить VisualWebPart1 на MyNewWebPart. Это решает проблему в большинстве случаев.
откройте каждый файл в решении и убедитесь, что ссылки на VisualWebPart1 отсутствуют. Если есть, измените их вручную на MyNewWebPart.
Гео
прошло некоторое время с тех пор, как я работал с веб-частями, но я изложил шаги здесь:
http://www.codersbarn.com/?tag=/webpart
может быть, там есть что-то, что может помочь.
Антоний :-)
Как уже упоминал Тим Скарборо, это может произойти, если вы измените пространство имен и не обновляйте все исходные файлы (так как это не делается автоматически). Просто для иллюстрации, в моем случае проблема заключалась в том, что класс webpart имел новое пространство имен а.б но я забыл обновить это в файл webpart:
<?xml version="1.0" encoding="utf-8"?>
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
//update below!
<type name="a.b.yourClass, $SharePoint.Project.AssemblyFullName$" />
<importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">your Title</property>
<property name="Description" type="string">your Description</property>
</properties>
</data>
</webPart>
</webParts>
Ну, если вы уже нашли решение, это здорово. Но вот совет для тех, кто ищет более. Если вы добавили новый webpart или visual webpart и просто замените пространство имен в таких файлах, как файлы кода или элемент.XML или даже .файл webpart вы все еще можете столкнуться с этой проблемой. Причина в том, что, как упоминалось выше, пространство имен не было изменено в .spdata файл, который является файлом, созданным самим Visual studio. Просто чтобы быть уверенным, иди. проверьте в Виртуальные Каталоги в корне inetroot. Если пространство имен по-прежнему является более старым, выполните поиск в своем решении и найдите конфликтующее. Скорее всего, в проекте.файл spdata, который все склонны игнорировать.