Pergunta

Eu tenho uma parte da web que eu desenvolvi, e se eu instalar manualmente a parte web é bom.

No entanto, quando eu embalados a parte web seguindo as instruções sobre este web site como um guia: http://www.theartofsharepoint.com/2007 /05/how-to-build-solution-pack-wsp.html

Eu recebo este erro nos arquivos de log:

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)     

O pouco pertinente é:

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)

E isso é acompanhado por uma mensagem de erro em vez concisa:. "Não é possível importar parte da web"

Eu verifiquei e meu .dll é registrado como seguro, é no GAC, o recurso é ativado, e as partes da web aparecem na biblioteca parte da web com todas as propriedades corretas, mostrando que os arquivos WebPart foram lidos com sucesso .

Tudo parece estar no lugar, mas eu recebo esse erro e pouca explicação do SharePoint de como resolvê-lo.

Qualquer ajuda para encontrar uma solução é apreciado.

Foi útil?

Solução

Descobri-lo.

A mensagem de erro é aquele a partir do arquivo .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>

O problema é que o arquivo .webpart original foi criado em um sistema de 32 bits com as extensões do Visual Studio para WSS instalado.

No entanto, como eu estou agora em uma máquina de 64 bits VSeWSS não estiver disponível, e eu acredito que resulte na acima GUID não sendo substituído como eu não estou usando essas ferramentas de implantação.

Substituir o GUID com as obras Nome Completo tipo.

Então, se você encontrar a mensagem de erro a partir do nó importErrorMessage, em seguida, verifique se o nó do tipo nos olhares de arquivo .webpart mais parecido com isso (exemplo não relacionada):

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

Este é no formato: Classe, Namespace, versão, cultura PublicKey

Você pode pegar tão facilmente a partir do arquivo web.config associado à sua instância SharePoint, como ele vai estar na lista de controles de segurança.

Outras dicas

Nós tivemos esse mesmo problema e constatou que o construtor da nossa parte web estava sendo chamado pelo WebPartImporter e dentro do construtor que estávamos fazendo SPSecurity.RunWithElevatedPrivileges.

Por alguma razão o WebPartImporter não pode lidar com isso. Então, nós simplesmente mudou o nosso código fora do construtor para OnInit (onde realmente pertencia) e está tudo bem.

Todos os grandes sugestões. Meu problema era único e bobo: Eu tinha implantado a solução para o primeiro aplicativo da Web, mas não para a segunda. SharePoint no entanto, ainda me permitiu ativar o recurso no segundo conjunto de sites da Web App (não sei porquê). Isto significou o segundo Web App não tinha uma entrada de controle seguro neste arquivo Web.config (e eu estava estupidamente verificando o primeiro Web.config).

Assim, verifique você está olhando para o aplicativo Web correto / web.config.

Agora, eu recebo uma resposta para problema semelhante como abaixo:

Quando tento acrescentou uma nova parte WEP para a página, o SharePoint me mostrar uma mensagem de erro, diga-me -. Não é possível importar minha parte web, esta mensagem de erro definir no arquivo .webpart

Então, eu tentei adicionar algumas partes ohter web na página, A aparência quesiton estranho, alguns deles podem ser adicionados, alguns deles podem não ser adicionados.

Depois eu segui o código da minha parte web e Anaylsis-los, descobri o motivo:

Código Antigo para a parte web ProjectInfo (meu nome de parte da 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]; 
        .....
 }

Parar agora, eu pensei que talvez o problema ordem de inicialização página web. AS página web carga controle de parte da web, função constructrue ProjectInfo () estará funcionando em primeiro lugar. Na verdade, o havn't página web terminar sua inicialização. pelo tempo.

Então eu fiz um teste. Em primeiro lugar, eu coloquei um bom web na página, é ok. então, eu tento colocar a parte web na página que não pode ser adicionado apenas agora. ~~ OK !! Está funcionando ... porque a página já o init. acabado.

Ok! Eu corrigi meu código:

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

Depois de teste, o did't mensagem de erro happed novamente .. LoL ~~

Espero que isso explica irá ajudá-lo.

Eu vi essa anomalia várias vezes sem uma resolução boa.

Verifique se o seu nome de Assembléia, Namespace, Classe está correto EM TODA PARTE. Isto tem pendurou-me mais de uma vez.

Certifique-se de que você tem uma entrada SafeControls válido.

Verifique se o seu arquivo .webpart é válido (vamos SharePoint criá-lo para você, se você puder)

Se você é absolutamente positiva que tudo está correto, bem, então você está preso em um lugar que eu ter sido várias vezes. A única coisa que eu posso vir acima com é que VS está compilando o erro de montagem. A correção só que eu encontrei é criar um novo projeto VS e configurá-lo como você precisa, em seguida, copiar o texto de seus arquivos CS antigos em seus novos arquivos CS ... não copiar os arquivos em si ... o objetivo é ter tudo fresco.

Isso tem funcionado para mim. Boa sorte.

Você reciclado seu processo de trabalho ou redefinir IIS?

mina resolvido.

i foi recebendo este erro:

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

"Não é possível importação webpart ..."

O problema foi: não correspondentes GUIDS

Verifique se o guid na classe webpart, e na .xml e na classe .webpart são os mesmos.

Eu estava copiar e colar o código de outras fontes webParts. (Mutliple Documento Carregar Wepart no Codeplex) e esqueceu de guids correção.

Eu também tenho experimentado este erro quando os conjuntos no GAC que minha parte web referenciada, foi assinado por um arquivo de chave nome forte diferente do que eu estava esperando. Descobri isso quando decidir atualizar essas DLLs. Quando inseri-lo no GAC notei que havia 2 entradas para o mesmo DLL mas eles tinham Key diferente Pública Tokens

Eu tenho esse erro quando eu criei uma parte web classe base e, em seguida, herdou uma classe derivada dela. A classe base foi bom, mas a classe derivada falhou quando tentei adicioná-lo a uma página web com o mesmo erro como o post original. No meu caso eu tive que adicionar um public modificador para a classe:

public class DerivedWebPart : BaseWebPart

Também acrescentei um construtor na classe derivada de chamar a classe base - embora eu acho que você não deve precisar isso realmente:

    public DerivedWebPart() : base()
    {
    }

Eu tive um problema muito semelhante a este, mas Guids não eram o problema: minha webpart não tem o conjunto atributo CLSCompliannt como falsa. Como assim:

namespace MyNamespace
{

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

    }
}

Descobri que o meu não importar pela primeira vez, mas se eu cliquei 'New' e acrescentou que, ele iria trabalhar.

A partir daí eu peguei uma cópia do XML e salva-lo ao meu projeto. A parte web funcionou muito bem depois disso.

Só me levou dias para chegar a este ponto. Um monte de tempo perdido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top