11

開発した Web パーツがあり、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 パーツ ライブラリに表示され、Web パーツ ファイルが正常に読み取られたことを示すすべての正しいプロパティが表示されます。

すべてが整っているように見えますが、そのエラーと SharePoint からの解決方法の説明はほとんどありません。

解決策を見つける手助けをいただければ幸いです。

4

11 に答える 11

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 ファイルが、Visual Studio Extensions for WSS がインストールされた 32 ビット システムで作成されたことです。

ただし、私は現在 64 ビット マシンを使用しているため、VSEEWSS を使用できません。これらの展開ツールを使用していないため、上記の GUID が代用されていないと考えています。

GUID を完全なタイプ名に置き換えると機能します。

そのため、importErrorMessage ノードからエラー メッセージが表示された場合は、.webpart ファイル内のタイプ ノードが次のようになっていることを確認してください (無関係な例)。

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

これは、クラス、名前空間、バージョン、カルチャ、公開キーの形式です。

これは、SharePoint インスタンスに関連付けられた web.config ファイルから簡単に取得できます。これは、安全なコントロール リストに含まれているためです。

于 2008-09-23T15:49:25.770 に答える
6

これと同じ問題が発生し、WebパーツのコンストラクターがWebPartImporterによって呼び出され、コンストラクター内でSPSecurity.RunWithElevatedPrivilegesを実行していることがわかりました。

何らかの理由で、WebPartImporterはこれを処理できません。したがって、コードをコンストラクターからOnInit(実際に属していた場所)に移動するだけで、すべてうまくいきます。

于 2009-07-09T15:41:59.103 に答える
2

すべての素晴らしい提案。私の問題は独特でばかげていました。ソリューションを最初の Web アプリケーションにデプロイしましたが、2 番目の Web アプリケーションにはデプロイしませんでした。ただし、SharePoint では、2 番目の Web アプリのサイト コレクションで機能を有効にすることができました (理由は不明です)。これは、2 番目の Web アプリがこの Web.config ファイルに安全なコントロール エントリを持っていなかったことを意味します (そして、最初の Web.config をばかげてチェックしていました)。

そのため、正しい Web アプリケーション/web.config を見ていることを再確認してください。

于 2012-02-08T00:57:40.130 に答える
1

今、私は以下のような同様の問題に対する答えを得る:

ページに新しい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]; 
        .....
 }

やめて、おそらくWebページの初期化順序の問題だと思いました。WebページのロードWebパーツ制御として、constructrue関数ProjectInfo()が最初に実行されます。実際、Webページは初期化を完了していません。その時には。

だから私はテストをしました。最初に、私はページに良いウェブを入れました、それは大丈夫です。それでは、今は追加できないWebパーツをページに入れてみます。~~ OK !! ページがすでに初期化されているため、機能しています。終了した。

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];
          ....
         }

テストした後、エラーメッセージは再び表示されませんでした。LoL~~

この説明がお役に立てば幸いです。

于 2009-01-16T04:48:46.490 に答える
1

私はこの異常を数回見ましたが、適切な解決策はありませんでした。

アセンブリ、名前空間、クラス名がどこでも正しいことを確認してください。これは私を何度も電話を切りました。

有効な SafeControls エントリがあることを確認してください。

.webpart ファイルが有効であることを確認します (可能であれば、SharePoint に作成させます)。

すべてが正しいと絶対に確信しているなら、あなたは私が何度か行った場所で立ち往生しています. 私が思いつく唯一のことは、VSがアセンブリを間違ってコンパイルしていることです。私が見つけた唯一の修正は、新しいVSプロジェクトを作成して必要に応じて設定し、古いCSファイルのテキストを新しいCSファイルにコピーすることです...ファイル自体をコピーしないでください...目標すべてを新鮮にすることです。

これは私にとってはうまくいきました。幸運を。

于 2009-08-04T15:50:50.570 に答える
0

初めてインポートしなかったのですが、「新規」をクリックして追加すれば動作します。

そこから、XMLのコピーを取得して、プロジェクトに保存しました。その後、Webパーツはうまく機能しました。

この時点に到達するのに数日しかかかりませんでした。多くの無駄な時間。

于 2009-11-08T08:37:31.587 に答える
0

基本クラスの Web パーツを作成し、そこから派生クラスを継承したときに、このエラーが発生しました。基本クラスは問題ありませんでしたが、派生クラスを Web ページに追加しようとすると、元の投稿と同じエラーで失敗しました。私の場合、クラスにpublic修飾子を追加する必要がありました。

public class DerivedWebPart : BaseWebPart

また、派生クラスにコンストラクターを追加して、基本クラスを呼び出すようにしましたが、これは実際には必要ないと思います。

    public DerivedWebPart() : base()
    {
    }
于 2009-03-24T15:29:41.380 に答える
0

これと非常によく似た問題がありましたが、Guid は問題ではありませんでした。Web パーツのCLSCompliannt属性が false に設定されていませんでした。そのようです:

namespace MyNamespace
{

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

    }
}
于 2010-11-20T21:44:08.943 に答える
0

ワーカー プロセスをリサイクルしたか、IIS をリセットしましたか?

于 2008-09-23T14:23:01.547 に答える
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)   
===========================================================================

「Web パーツをインポートできません...」

問題は次のとおりです: GUIDS が一致しない

Webpart クラス、および .xml と .webpart クラスの GUID が同じかどうかを確認してください。

他の Web パーツ ソースからコードをコピーして貼り付けていました。(Codeplex の複数のドキュメントのアップロード Wepart) と、GUID を修正するのを忘れていました。

于 2009-01-19T07:40:54.650 に答える