簡體   English   中英

SharePoint錯誤:“無法導入Web部件”

[英]SharePoint error: “Cannot import Web Part”

我有一個我開發的Web部件,如果我手動安裝Web部件就可以了。

但是,當我按照本網站上的說明打包Web部件作為指南時: 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)

這伴隨着一個相當簡潔的錯誤消息:“無法導入Web部件”。

我已檢查並且我的.dll已注冊為安全,它在GAC中,該功能已激活,並且Web部件顯示在Web部件庫中,其中所有正確的屬性顯示已成功讀取webpart文件。

一切似乎都已到位,但我得到了這個錯誤,並且很少有關於如何解決它的解釋。

任何尋求解決方案的幫助表示贊賞。

弄清楚了。

錯誤消息是.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文件是在安裝了Visual Studio Extensions for WSS的32位系統上創建的。

但是,由於我現在使用的是64位計算機VSEWSS不可用,並且我認為導致上述GUID沒有被替換,因為我沒有使用這些部署工具。

使用完整類型名稱替換GUID有效。

因此,如果您遇到importErrorMessage節點的錯誤消息,請檢查.webpart文件中的類型節點是否更像這樣(不相關的示例):

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

其格式為:Class,Namespace,Version,Culture,PublicKey

您可以從與SharePoint實例關聯的web.config文件中輕松獲取該文件,因為它將位於安全控件列表中。

我們遇到了同樣的問題,發現Web部件的構造函數是由WebPartImporter調用的,在構造函數中我們正在執行SPSecurity.RunWithElevatedPrivileges。

由於某種原因,WebPartImporter無法處理此問題。 所以,我們只是將我們的代碼從構造函數移到OnInit(它真正屬於的地方),一切都很好。

所有偉大的建議。 我的問題是獨特和愚蠢的:我已經將解決​​方案部署到第一個Web應用程序而不是第二個。 但是,SharePoint仍允許我在第二個Web應用程序的網站集上激活該功能(不確定原因)。 這意味着第二個Web應用程序在此Web.config文件中沒有安全控件條目(我愚蠢地檢查了第一個Web.config)。

因此,請仔細檢查您是否正在查看正確的Web應用程序/ web.config。

我已經好幾次看到這種異常,沒有很好的分辨率。

檢查您的程序集,命名空間,類名稱是否正確無論如何。 這讓我不止一次。

確保您有一個有效的SafeControls條目。

確保您的.webpart文件有效(如果可以,讓SharePoint為您創建)

如果你絕對肯定一切都是正確的,那么你就會被困在我已經好幾次的地方。 我能想到的唯一一件事就是VS正在編譯程序集錯誤。 我找到的唯一修復是創建一個新的VS項目並根據需要進行設置,然后將舊CS文件的文本復制到新的CS文件中...不要自己復制文件...目標是讓一切都新鮮。

這對我有用。 祝好運。

現在我得到類似問題的答案如下:

當我嘗試向頁面添加新的wep部件時,sharepoint會顯示一條錯誤消息,告訴我 - 無法導入我的Web部件,此錯誤消息在.webpart文件中定義。

所以我試圖在頁面中添加一些更好的網頁部件,一個奇怪的問題外觀,其中一些可以添加,其中一些無法添加。

在我跟蹤了我的Web部件的代碼並分析了它們之后,我找到了原因:

Web部件ProjectInfo(我的Web部件名稱)的舊代碼是:

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網頁加載Web部件控件,構造函數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()
     {
            .....
                //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];
          ....
         }

我測試后,錯誤消息沒有再次發生.. LoL ~~

希望這個解釋能幫到你。

您是否已回收工作進程或重置IIS?

我發現我的第一次沒有導入,但如果我點擊'新'並添加它,它就可以了。

從那里我抓起了XML的副本並將其保存到我的項目中。 之后,網絡部分運作良好。

我只花了DAYS來達到這一點。 浪費了很多時間。

我有一個與此非常類似的問題,但Guids不是問題:我的webpart沒有將CLSCompliannt屬性設置為false。 像這樣:

namespace MyNamespace
{

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

    }
}

解決了我的問題。

我收到了這個錯誤:

===========================================================================
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)   
===========================================================================

“無法導入webpart ......”

問題是:不匹配的GUIDS

檢查webpart類以及.xml和.webpart類中的guid是否相同。

我是從其他webparts源代碼復制粘貼代碼。 (Mutliple文件上傳Wepart on Codeplex)並忘記修復guids。

當我的Web部件引用的GAC中的程序集由不同的強名稱密鑰文件簽署到我期望的內容時,我也遇到了此錯誤。 我在決定更新這些DLL時發現了這一點。 當它插入GAC時,我注意到同一個DLL有2個條目,但它們有不同的公鑰標記

當我創建基類Web部件然后從中繼承派生類時,我收到此錯誤。 基類很好,但是當我嘗試將它添加到與原始帖子具有相同錯誤的網頁時,派生類失敗了。 在我的情況下,我不得不在類中添加一個public修飾符:

public class DerivedWebPart : BaseWebPart

我還在派生類中添加了一個構造函數來調用基類 - 盡管我認為你不應該真正需要它:

    public DerivedWebPart() : base()
    {
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM