簡體   English   中英

自定義 Web 部件部署產生“無法導入此 Web 部件”錯誤

[英]Custom web part deployment produces 'Cannot import this webpart' error

我在 Visual Studio 2010 中構建了一個空的 SharePoint 項目,其中包含一些自定義 Web 部件。 當我在我的本地開發機器上測試它們時,它們可以毫無問題地添加到頁面中。

當我通過 PowerShell 將 wsp 部署到遠程 SharePoint 服務器時,Web 部件會顯示在 Web 部件庫中,但向頁面添加一個會導致錯誤“無法導入此 Web 部件”。 日志中沒有進一步的信息。 根據我通過谷歌找到的一些答案,我檢查了 Init 中沒有代碼。 所有初始處理都在 CreateChildControls 中完成(盡管我會認為如果這是原因,我會在本地機器上得到相同的錯誤)。

我最初在https://sharepoint.stackexchange.com/questions/11820/custom-web-part-deployment-produces-cannot-import-this-webpart-error提出了這個問題。 根據我收到的建議,我決定創建一個新項目,在其中我完成了最少的編碼。

新項目只有一個簡單的標簽 Web 部件。 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 策略添加到項目中(因為這些策略將部署到 bin 而不是 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 部件庫中查看 webpart 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

它找不到 Web 部件中引用的程序集。 您看到的錯誤實際上是這行代碼的等價物。

無法導入此 Web 部件。

您需要做的是驗證 .webpart 定義文件中的完整類和程序集引用名稱並進行相應更新。

不幸的是,我不能告訴你它應該是什么,因為你的項目定義可能會輸出與你的類定​​義不同的信息的程序集。

暫無
暫無

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

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