2008-09-23 4 views
11

У меня есть веб-часть, которую я разработал, и если я вручную установил веб-часть, это нормально.Ошибка SharePoint: «Не удается импортировать веб-часть»

Однако, когда я упаковал веб-часть, следуя инструкциям на данном веб-сайте в качестве руководства: http://www.theartofsharepoint.com/2007/05/how-to-build-solution-pack-wsp.html

я получаю эту ошибку в лог-файлах:

09/23/2008 14:13:03.67 w3wp.exe (0x1B5C)       0x1534 Windows SharePoint Services  Web Parts      8l4d Monitorable Error importing WebPart. Cannot import Project Filter. 
09/23/2008 14:13:03.67 w3wp.exe (0x1B5C)       0x1534 Windows SharePoint Services  Web Parts      89ku High  Failed to add webpart http%253A%252F%252Fuk64p12%252FPWA%252F%255Fcatalogs%252Fwp%252FProjectFilter%252Ewebpart;Project%2520Filter. Exception Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Cannot import Project Filter.  at Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(Boolean clearConnections)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, Uri webPartPageUri, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(... 
09/23/2008 14:13:03.67* w3wp.exe (0x1B5C)       0x1534 Windows SharePoint Services  Web Parts      89ku High  ...String eventArgument)  

Соответствующий бит:

http%253A%252F%252Fuk64p12%252FPWA%252F%255Fcatalogs%252Fwp%252FProjectFilter%252Ewebpart;Project%2520Filter. 
Exception Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Cannot import Project Filter. 
at Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(Boolean clearConnections) 
at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, Uri webPartPageUri, SPWeb spWeb) 
at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, SPWeb spWeb) 
at Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 

И это сопровождается довольно кратким сообщением об ошибке: «Невозможно импортировать веб-часть».

Я проверил и моя .dll зарегистрирована как безопасная, она находится в GAC, функция активирована, а веб-части отображаются в библиотеке веб-частей со всеми правильными свойствами, показывающими, что файлы веб-страниц были прочитаны успешно.

Все, кажется, на месте, но я получаю эту ошибку и небольшое объяснение от SharePoint о том, как ее разрешить.

Любая помощь в поиске решения оценивается.

ответ

8

Выяснил это.

Сообщение об ошибке является один из файла .webpart:

<?xml version="1.0" encoding="utf-8"?> 
<webParts> 
    <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
    <metaData> 
     <!-- 
     The following Guid is used as a reference to the web part class, 
     and it will be automatically replaced with actual type name at deployment time. 
     --> 
     <type name="7F8C4D34-6311-4f22-87B4-A221FA8735BA" /> 
     <importErrorMessage>Cannot import Project Filter.</importErrorMessage> 
    </metaData> 
    <data> 
     <properties> 
     <property name="Title" type="string">Project Filter</property> 
     <property name="Description" type="string">Provides a list of Projects that can be used to Filter other Web Parts.</property> 
     </properties> 
    </data> 
    </webPart> 
</webParts> 

Проблема заключается в том, что исходный файл .webpart был создан на 32-битной систему с визуальными расширениями студии для WSS установлен.

Однако, поскольку я сейчас на 64-битной машине, VSEWSS недоступен, и я считаю, что результаты этого GUID не заменяются, поскольку я не использую эти инструменты развертывания.

Замена идентификатора GUID на полное имя типа.

Так что, если вы столкнулись с сообщением об ошибке с вашего importErrorMessage узла, а затем убедитесь, что ваш узел типа в файле .webpart выглядит так (несвязанный пример):

<type name="TitleWP.TitleWP, TitleWP, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" /> 

Это в формате: Класс, пространство имен, версия, культура, PublicKey

Вы можете легко получить это из файла web.config, связанного с вашим экземпляром SharePoint, так как он будет в списке безопасных элементов управления.

0

Вы переработали свой рабочий процесс или сбросили IIS?

+0

Я попробую. Я этого не делал. – 2008-09-23 14:44:51

+0

Nope ... не работает. Такая же ошибка и запись файла журнала. – 2008-09-23 15:26:14

1

Теперь я получаю ответ на аналогичную проблему, как показано ниже:

Когда я пытаюсь добавлен новый Wep часть на страницу, то Sharepoint показать мне сообщение об ошибке, скажите - Не могу импортировать мой веб-часть , это сообщение об ошибке определяется в файле .webpart.

Так что я попытался добавить некоторые веб-части ohter на странице, странный внешний вид quesiton, некоторые из них могут быть добавлены, некоторые из них не могут быть добавлены.

После того как я проследил код моего веб-части и anaylsis их, я нашел причину:

старый код для веб-части ProjectInfo (мой веб-часть названия) является:

namespace ProjectInfo 
.... 
public class ProjectInfo:System.Web.UI.WebControls.WebParts.Web.part 
{ 
     ..... 
     private SPWeb _spWeb; 
     private SPList _spList; 
     private string _listName = "ProjectDocs"; 
     ...... 
} 
public ProjectInfo() 
{ 
     ..... 
      _spWeb = SPContext.Current.Web; 
      //It show me a error here when i trace the code 
      _spList = _spWeb.Lists[_listName]; 
     ..... 
} 

Остановить сейчас, Я подумал, что это может быть проблема с порядковым порядком веб-страницы. Управление веб-страницей веб-страницы AS, функция createrue ProjectInfo() будет запущена вначале. Фактически, веб-страница не завершила свой init. тем временем.

поэтому я сделал тест. во-первых, я поставил хорошую страницу на странице, все в порядке. затем я пытаюсь поместить веб-часть на страницу, которую нельзя добавить только сейчас. ~~ ОК !! Он работает ... потому что страница уже инициализирована. законченный.

Ok! Я исправил мой код:

namespace ProjectInfo 
    .... 
    public class ProjectInfo:System.Web.UI.WebControls.WebParts.Web.part 
    { 
      ..... 
      private SPWeb _spWeb; 
      private SPList _spList; 
      private string _listName = "ProjectDocs"; 
      ...... 
    } 
    public ProjectInfo() 
    { 
      ..... 
       //Remove code in constructure function. 
       //_spWeb = SPContext.Current.Web; 
       //It show me a error here when i trace the code 
       //_spList = _spWeb.Lists[_listName]; 
      ..... 
    } 

    protected override void CreateChildControls() 
     { 
     .... 
      base.CreateChildControls(); 

      _spWeb = SPContext.Current.Web; 
      _spList = _spWeb.Lists[_listName]; 
      .... 
     } 

После того как я проверить, сообщение об ошибке did't случалось еще раз .. LoL ~~

Надежда это объяснить вам поможет.

0

Решенные шахты.

я получаю эту ошибку:

=========================================================================== 
Error importing WebPart. Cannot import ........ Web Part. 
Failed to add webpart 
Exception Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Cannot import ... Web Part.  at Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(Boolean clearConnections)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, Uri webPartPageUri, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
=========================================================================== 

"Невозможно импортировать веб-части ..."

Проблема была: несовпадающих Guids

Проверьте, если Guid на класс веб-части, и в .xml и в .webpart классе такие же.

Я был скопировал код из других источников веб-сайтов. (Mutliple Document Upload Wepart on Codeplex) и забыл исправить подсказки.

0

Я также испытал эту ошибку, когда сборки в GAC, на которые ссылалась моя веб-часть, были подписаны другим сильным ключевым файлом с именем, который я ожидал. Я нашел это при принятии решения об обновлении этих DLL. При вставке в GAC я заметил, что для одной DLL было 2 записи, но у них были разные токены открытого ключа

0

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

public class DerivedWebPart : BaseWebPart 

Также я добавил конструктор в производном классе, чтобы вызвать базовый класс один - хотя я думаю, что вам не нужно это на самом деле:

public DerivedWebPart() : base() 
    { 
    } 
6

у нас была такая же проблема и обнаружил, что конструктор нашего веб-части в настоящее время вызывается WebPartImporter и в конструкторе мы делаем SPSecurity.RunWithElevatedPrivileges.

По какой-то причине WebPartImporter не может справиться с этим. Итак, мы просто переместили наш код из конструктора в OnInit (где он действительно принадлежал), и все хорошо.

1

Я видел эту аномалию несколько раз без хорошего разрешения.

Убедитесь, что ваша сборка, пространство имен, название класса верны ВЕЗДЕ. Это повредило меня не один раз.

Убедитесь, что у вас есть действительная запись SafeControls.

Убедитесь, что файл .webpart действует (пусть SharePoint создать его для вас, если вы можете)

Если вы абсолютно уверены, что все правильно, а затем вы застряли в месте, которое я был несколько раз. Единственное, что я могу придумать, это то, что VS компилирует сборку неправильно. Единственное исправление, которое я нашел, это создать новый проект VS и настроить его, как вам нужно, а затем скопировать ТЕКСТ ваших старых файлов CS в ваши новые файлы CS ... не копировать сами файлы ... цель чтобы все было свежо.

Это сработало для меня. Удачи.

0

Я обнаружил, что мой не импортировал в первый раз, но если бы я нажал «Создать» и добавил, это сработает.

Оттуда я взял копию XML и сохранил ее в своем проекте. После этого веб-часть отлично работала.

Мне потребовались только ДНИ, чтобы добраться до этой точки. Много времени впустую.

0

У меня была проблема, очень похожая на это, но Гиды не были проблемой: у моего веб-части не было установленного атрибута CLSCompliannt равным false. Например:

namespace MyNamespace 
{ 

    [CLSCompliant(false)] 
    [Guid("...")] 
    public class MyWidget : MyWebPartBaseClass 
    { 

    } 
} 
2

Все замечательные предложения. Моя проблема была уникальной и глупой: я применил решение к первому веб-приложению, но не ко второму. Однако SharePoint все же позволил мне активировать эту функцию во второй веб-сайте сайта (не уверен, почему). Это означало, что у второго веб-приложения не было записи безопасного контроля в этом файле Web.config (и я тупо проверял первый Web.config).

Итак, дважды проверьте, что вы смотрите на правильное веб-приложение/web.config.