我已經在Visual Studio 2010中構建了一個空白的SharePoint項目,其中包含一些自定義Web部件。當我在我的本地開發機器上測試過它們時,它們可以毫無困難地添加到頁面中。自定義Web部件部署產生'無法導入此Webpart'錯誤
當我部署通過PowerShell來遠程SharePoint服務器中的WSP,Web部件顯示在Web部件庫,但增加一個頁面讓我的錯誤「無法導入此Web部件」。日誌中沒有更多信息。根據我通過Google找到的一些答案,我已經檢查過Init中沒有代碼。所有的初始處理都是在CreateChildControls中完成的(儘管我會想如果這是原因,我會在本地機器上得到相同的錯誤)。
本來我問了這個問題https://sharepoint.stackexchange.com/questions/11820/custom-web-part-deployment-produces-cannot-import-this-webpart-error。從我收到的建議中,我決定創建一個新的項目,我已經完成了最少的編碼。
新項目只有一個簡單的標籤Web部件。對於網絡部分的代碼
using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace TestWebParts.TestHelloWorld
{
[ToolboxItemAttribute(false)]
public class TestHelloWorld : WebPart
{
protected override void CreateChildControls()
{
Label lblThis = new Label();
lblThis.Text = "Testing web part";
Controls.Add(lblThis);
}
}
}
該項目的.webpart文件
<?xml version="1.0" encoding="utf-8"?>
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="TestWebParts.TestHelloWorld.TestHelloWorld, $SharePoint.Project.AssemblyFullName$" />
<importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">TestHelloWorld</property>
<property name="Description" type="string">My WebPart</property>
</properties>
</data>
</webPart>
</webParts>
我已經檢查了安全控制項已被添加。我已經爲項目添加了CAS策略(因爲這些策略將部署到垃圾箱而不是GAC)。包清單看起來像這樣
<?xml version="1.0" encoding="utf-8"?>
<Solution xmlns="http://schemas.microsoft.com/sharepoint/">
<CodeAccessSecurity>
<PolicyItem>
<PermissionSet class="NamedPermissionSet" version="1" Description="Permission set for ECB">
<IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
<IPermission class="SecurityPermission" version="1" Flags="Execution,ControlPrincipal,ControlAppDomain,ControlDomainPolicy,ControlEvidence,ControlThread" />
<IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
version="1" ObjectModel="True" />
<IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Read="UserName" />
<IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" PathDiscovery="*AllFiles*" />
<IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" PathDiscovery="*AllFiles*" />
</PermissionSet>
<Assemblies>
<Assembly Name="$SharePoint.Project.AssemblyName$" Vers7ion="$SharePoint.Project.AssemblyVersion$" PublicKeyBlob="$SharePoint.Project.AssemblyPublicKeyBlob$"/>
</Assemblies>
</PolicyItem>
</CodeAccessSecurity>
</Solution>
.wsp在開發機器上安裝正常我試圖讓它運行。當我嘗試查看Web部件庫中的Web部件時,我收到消息「無法導入此Web部件」,如上所示。我已確認.dll位於bin目錄中。 web.config文件中保存此項
<SafeControl Assembly="TestWebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d63a878e7c304c2" Namespace="TestWebParts.TestHelloWorld" TypeName="*" Safe="True" SafeAgainstScript="True" />
當我從Web部件庫中查看的網頁組件的XML我看到
<?xml version="1.0" encoding="utf-8"?>
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="TestWebParts.TestHelloWorld.TestHelloWorld, TestWebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d63a878e7c304c2" />
<importErrorMessage>Cannot import this Web Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">TestHelloWorld</property>
<property name="Description" type="string">My WebPart</property>
</properties>
</data>
</webPart>
</webParts>
沒有任何人有任何想法,這可能是導致這個問題時,我部署到開發機器?我能想到的唯一的另一件事是,我的本地計算機是Windows 7和的開發機是Windows Server 2008中兩者都運行SharePoint Foundation
如果這是問題 - 當我部署到本地計算機時,看不到同樣的錯誤嗎?我已經使用相同的Powershell腳本在本地進行部署,沒有任何問題... – grimorde 2011-05-11 07:22:16
唉,它把我切斷了。 有幾件事要檢查。 1.檢查程序集是否已加載到GAC或關聯的Web bin文件夾中。如果沒有,請檢查您生成的解決方案.wsp是否包含程序集。 2.如果您在gac中看到程序集並且仍然看到此問題,請嘗試將web.config信任級別更新爲完整 如果選項2有效,那麼缺少信任裝配中的條目和/或裝配體中的引用。 還要確保你總是在部署後重新啓動IIS –
2011-05-11 13:58:10
1.是的,它確實在bin目錄下2.仍然無法導入完全信任集的Web部件錯誤。 – grimorde 2011-05-11 14:27:58