2009-11-06 15 views
11

Ho una web part di SharePoint (essenzialmente solo un'app "Hello World") che ho appena creato e sto avendo problemi a distribuirlo. Ho firmato il file .dll, ho creato il file .dwp e l'ho registrato come controllo sicuro in web.config. Sono in grado di aggiungerlo alla Web Part Gallery e aggiungere i dettagli per esso; tuttavia, quando si tenta di aggiungerlo a una pagina, ottengo il seguente errore:Parte web Sharepoint: il tipo non è stato trovato/registrato come sicuro

A Web Part or Web Form Control on this Page cannot be displayed or imported. The type could not be found or it is not registered as safe.

seguito è il mio file con estensione dwp:

<?xml version="1.0"?> 
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"> 
    <Assembly>SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=################</Assembly> 
    <TypeName>MyWebParts.SimpleWebPart</TypeName> 
    <Title>My Simple Web Part</Title> 
    <Description>A simple Web Part</Description> 
</WebPart> 

e l'entrata ho aggiunto al web.config:

<SafeControl Assembly="SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=################" Namespace="MyWebParts" TypeName="*" Safe="True" /> 

Ho anche provato a utilizzare i caratteri jolly per lo spazio dei nomi, che non ha aiutato. Ho persino provato a impostare il livello di attendibilità di web.config su "Full" (cosa che non avrei mai dovuto fare in produzione, ma ho provato a cercare di restringere il problema) e ancora non ho avuto fortuna. Qualche idea? Grazie.

+0

Uh, questa potrebbe essere una domanda stupida, ma hai il token di chiave pubblica nei tuoi file al posto di un mucchio di hash? ... Si chiama "pubblico" per una ragione. –

+0

Questa non è una domanda stupida. Ho la vera chiave al posto di quegli hash. –

risposta

4

State implementando la vostra webpart utilizzando una soluzione di SharePoint (file con estensione wsp)? Controlla WSPBuilder se non lo sei. Usiamo anche SharePoint Installer Tra i due, molti dei problemi (che derivano da errori umani o altro) nelle distribuzioni, come il tuo problema è stato risolto nel nostro ambiente.

+0

Gli SmartTemplates di SharePoint che sto utilizzando utilizzano WSPBuilder e SharePoint Installer. Sono strumenti fantastici e risolvono il problema immediatamente. Grazie! –

+0

Dato che ci sono così tante persone che hanno questo problema, ho pensato di fornire anche un collegamento a SharePoint SmartTemplates: http://smarttemplates.codeplex.com/Wikipage. È uno strumento fantastico che sfrutta sia WSPBuilder che SP Installer e rende l'implementazione completamente indolore e coerente. –

3

Assicurati di avere la web part class come pubblica, potrebbe sembrare sciocco ma ho affrontato una volta. Prova anche a compilare la web part dalla Galleria web part.

+0

Ho fatto un doppio controllo, e la classe che usa è davvero pubblica. Essendo installato manualmente, appare già nella galleria stessa e non posso popolarlo dalla sezione "Nuove web part". –

+0

non proprio il mio problema ma abbastanza vicino per me da guardare nella giusta direzione, grazie! – Rob

2

Hai provato a distribuirlo nel GAC?

+0

Il mio primo pensiero: dov'è la DLL sul server? Directory bin locale o GAC? –

+0

Il file .dll si trova nella directory bin sul server SharePoint. Ho provato a installare il file .dll nella directory WINDOWS \ assembly e, sebbene sia stato installato correttamente, non è stato possibile aggiungere il controllo a una pagina. Sto lavorando con SharePoint su una porta specifica (uno diverso da 80) e presume che potrei installare il file .dll nella directory \ bin \ nella cartella per quella porta, ma non c'è gioia in entrambi i casi. –

+0

Non capisco perché non visualizzo il file .dll nella sezione "Nuove web part" quando lo spostamento in WINDOWS \ Assembly. Dovrebbe apparire nell'elenco in modo da poter popolare la mia galleria web part con esso, non è vero? –

0

Geo,

E 'stato un po' da quando ho lavorato con le web, ma ho messo i passi qui:

http://www.codersbarn.com/?tag=/webpart

Forse c'è qualcosa che può aiutare.

Anthony :-)

+1

Hai alcuni punti interessanti in quell'articolo che Non ero ancora stato esposto a, in particolare alcune impostazioni di web.config che possono causare problemi. Grazie per il link! –

3

Ho anche visto questo problema quando ho cambiato lo spazio dei nomi per l'assembly WebPart e lo spazio dei nomi non è stato aggiornato in tutti i file di origine nella soluzione.

33

Una possibilità è che i nomi dei tipi non siano sincronizzati con il file .webpart. Per es.

Nel file .webpart:

<?xml version="1.0" encoding="utf-8"?> 
<webParts> 
    <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
    <metaData> 
     <type name="Namespace.Class1, $SharePoint.Project.AssemblyFullName$" /> 

e nelle .cs di file:

namespace Namespace 
{ 
    public class Class2 : WebPart 

e nel SharePointProjectItem.spdata di file:

<SafeControl Assembly="Class2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9385058ce1ee51a9" Namespace="Namespace" TypeName="*" Safe="True" SafeAgainstScript="False" /> 

ti viene l'idea: verifica la coerenza dei nomi con triplo controllo su tutti gli artefatti del progetto.

+1

Con me era il file SharepointProjectItem.spdata sotto la web part visiva che conteneva lo spazio dei nomi errato. Facile da trascurare! – Rogier

+1

Inizialmente, la mia web part si chiamava VisualWebPart1. L'ho rinominato, ma la quinta riga di .webpart (dove si dice Namespace.Class1 sopra) si riferiva ancora a VisualWebPart1. Trova nei file aiutato (come ha fatto questa risposta). – John

+0

Ho avuto lo stesso problema quando ho provato a personalizzare lo spazio dei nomi per NON includere il nome della web part. Personalmente, un Namespace non dovrebbe includere il nome della classe, che non è lo standard in nessun altro posto in Microsoft land. Anche il file SharepointProjectItem.spdata deve essere modificato. Consiglia questo essere contrassegnato come la risposta! – CigarDoug

1

Ok, questo potrebbe essere molto tardi ma sarà utile per il resto.Ho creato una web part e ho ricevuto l'errore "Impossibile visualizzare o importare una web part o un controllo Web Form in questa pagina, impossibile trovare il tipo o non registrato come sicuro."

Ho pensato che stavo usando un grafico all'interno di questa web part e una volta rimosso il riferimento del grafico, ha funzionato. Quindi, il controllo del grafico deve essere anche contrassegnato come typesafe.

Assicurarsi che tutti i riferimenti nella web part siano sicuri.

1

Ciò accade in genere quando si modifica il nome della web part da VisualWebPart1 in MyNewWebPart. Dopo aver eseguito una ricerca e sostituisci l'intera soluzione, rinominare tutti i file e le cartelle con VisualWebPart1 in MyNewWebPart. Il problema è causato dal file SharePointProjectItem.spdata che non è stato aggiornato. Aprire SharePointProjectItem.spdata e sostituire VisualWebPart1 con MyNewWebPart. Questo risolve il problema nella maggior parte dei casi.

Aprire tutti i file nella soluzione e verificare che non vi siano riferimenti a VisualWebPart1. Se ci sono, modificali manualmente su MyNewWebPart.

0

Come già detto da Tim Scarborough, ciò può accadere se si modifica lo spazio dei nomi e non si aggiornano tutti i file di origine (poiché ciò non viene eseguito automaticamente). Solo per esempio, nel mio caso il problema era che la classe webpart ha avuto un nuovo spazio dei nomi ab ma ho dimenticato di aggiornare questo nel file webpart:

<?xml version="1.0" encoding="utf-8"?> 
<webParts> 
    <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
<metaData> 
      //update below! 
    <type name="a.b.yourClass, $SharePoint.Project.AssemblyFullName$" /> 

    <importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage> 
</metaData> 
<data> 
<properties> 
    <property name="Title" type="string">your Title</property> 
    <property name="Description" type="string">your Description</property> 
    </properties> 
</data> 
</webPart> 
</webParts> 
0

Beh, se avete già trovato la soluzione , è fantastico. Ma ecco un suggerimento per qualcuno che sta cercando di più. Se hai aggiunto una nuova web part o una webpart visiva e sostituisci semplicemente lo spazio dei nomi nei file come i file di codice o Element.xml o anche .webpart, potresti ancora affrontare questo problema. Il motivo è, come accennato sopra, che lo spazio dei nomi non è stato modificato in .spdata file, che è un file creato da Visual Studio stesso. Per sicurezza, controlla le directory virtuali nell'internal. Se lo spazio dei nomi è ancora il più vecchio, fai una ricerca nella tua soluzione e scopri quella in conflitto. Molto probabilmente nel file project.spdata, che tutti tendono a ignorare.

Problemi correlati