Ошибка при попытке развернуть веб-часть
-
03-07-2019 - |
Вопрос
Я только что написал новую веб-часть и теперь получаю эту ошибку, когда пытаюсь развернуть ее на своих серверах, отличных от разработки:
пространство имен по умолчанию 'http://schemas.microsoft.com/WebPart/v2«Это зарезервированное пространство имен для базовых веб -объектов.Пользовательские свойства веб -деталей требуют уникального пространства имен (указанное через XMlelementatttribute на свойство, или XMLRootattribute в классе).
Я записываю веб-части в CAB-файлы и развертываю их следующим образом:
stsadm -o addwppack -filename web_part_name.CAB -url http://your_url_here -globalinstall -force
Все работает нормально, пока я не пытаюсь добавить веб-часть, а затем во всплывающем окне появляется эта ошибка.Он отлично работает на моей виртуальной машине разработки...?
Любые идеи будут оценены, спасибо.
Решение
Что ж, похоже, ваш файл определения веб-части каким-то образом поврежден.Я делаю это так: помещаю веб-часть на страницу, а затем экспортирую ее.Вы можете сделать это, просто открыв галерею веб-частей, которую можно найти в настройках сайта корневого семейства сайтов, и добавьте туда свою веб-часть.
После этого просто поместите веб-часть на любую страницу и используйте кнопку экспорта в настройках веб-части.В результате будет создан файл .webpart или .dwp в зависимости от вашей веб-части (.webpart — это «новое» определение, которое используется веб-частями, родными для MOSS 2007, а .dwp — для старых веб-частей, но это зависит от того, как вы написали свою веб-часть)
Затем просто возьмите экспортированный файл и включите его в свой проект.По крайней мере, этот подход работает для меня.
Другие советы
Вы упаковали свою веб-часть в файл .webpart?
В этом случае вам придется использовать новое пространство имен v3.Чтобы использовать версию 2, вам необходимо упаковать ее как файл .dwp.
Да, возможно, ваш файл определения веб-части (*.dwp или *.webpart) неверен.Опубликуйте это здесь, и ошибка будет быстро найдена.
Здесь немного обоснованное предположение, но в любом случае: -
Сначала убедитесь, что в вашей веб-части есть такой атрибут XmlRoot.
[XmlRoot(Namespace = "Your.Namespace")]
public class YourWebPart: WebPart
{
...
и атрибут XmlElement в ваших пользовательских свойствах.
[DefaultValue(0)]
[WebPartStorage(Storage.Shared)]
[Browsable(false)]
[XmlElement(ElementName = "YourProperty")]
public Int64 YourProperty
{
...
}
Эта ошибка возникает, когда .NET пытается дестерилизовать данные из файла .DWP и установить настраиваемые свойства в вашей веб-части.
Я подозреваю, что ошибка может не иметь ничего общего с конфликтами пространств имен, поскольку SharePoint иногда имеет тенденцию возвращаться к сообщениям об ошибках, которые могут быть отвлекающим маневром.
Сначала я бы проверил ваш файл .dwp.Установлены ли там какие-либо пользовательские свойства? Если да, удалите их и повторите тестирование.
Закомментируйте настраиваемые свойства в коде веб-части одно за другим и повторяйте тестирование на каждом этапе.
Я думаю, вы обнаружите, что один из них вызывает проблему — следующий вопрос, почему именно!