[英]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.