web-dev-qa-db-ger.com

Sharepoint-Webpart: Typ konnte nicht als sicher gefunden/registriert werden

Ich habe einen SharePoint-Webpart (im Wesentlichen nur eine "Hello World" -App), den ich gerade erstellt habe, und habe Probleme bei der Bereitstellung. Ich habe die .dll signiert, die .dwp erstellt und als sicheres Steuerelement in web.config registriert. Ich kann es der Webpart-Galerie hinzufügen und die Details dazu hinzufügen. Wenn ich jedoch versuche, es einer Seite hinzuzufügen, erhalte ich die folgende Fehlermeldung:

Ein Webpart oder ein Web Form Control auf dieser Seite kann nicht angezeigt oder importiert werden. Der Typ wurde nicht gefunden oder er ist Nicht als sicher registriert.

Folgendes ist meine .dwp-Datei: 

<?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>

und der Eintrag, den ich zu web.config hinzugefügt habe:

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

Ich habe auch versucht, Platzhalter für den Namespace zu verwenden, was nicht geholfen hat. Ich habe sogar versucht, die Vertrauensstufe web.config auf "Full" zu setzen (was ich in der Produktion nie tun würde, aber versuchen würde, das Problem einzugrenzen) und hatte trotzdem kein Glück. Irgendwelche Ideen? Vielen Dank.

11
Geo Ego

Stellen Sie Ihren Webpart mithilfe einer SharePoint-Lösung (WSP-Datei) bereit? Check out WSPBuilder falls nicht. Wir verwenden auch SharePoint Installer Zwischen den beiden wurden viele Probleme (ob durch menschliche Fehler oder aus anderen Gründen) in Bereitstellungen, wie Ihr Problem in unserer Umgebung gelöst.

4
Kyle Trauberman

Eine Möglichkeit ist, dass die Namen der Typen nicht mit der .webpart-Datei übereinstimmen. Für ex.

In der Datei .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$" />

und in der .cs datei:

namespace Namespace
{
    public class Class2 : WebPart

und in der Datei SharePointProjectItem.spdata :

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

sie bekommen die Idee: Konsistenz der Namen durch dreifache Prüfung über alle Projektartefakte hinweg.

33
Ariel

Ich habe dieses Problem auch gesehen, als ich den Namespace für meine WebPart-Assembly geändert habe und der Namespace nicht in allen Quelldateien der Lösung aktualisiert wurde.

3
Tim Scarborough

Vergewissern Sie sich, dass Sie die Webpart-Klasse als "Öffentlich" haben. Das klingt vielleicht dumm, aber ich habe es einmal erlebt. Versuchen Sie auch, den Webpart aus der Webpart-Galerie zu füllen.

3
Kusek

Haben Sie versucht, es im GAC bereitzustellen?

2
IrishChieftain

Dies geschieht normalerweise, wenn Sie den Namen des Webparts von VisualWebPart1 in MyNewWebPart ändern. Benennen Sie nach dem Suchen und Ersetzen für die gesamte Lösung alle Dateien und Ordner mit VisualWebPart1 in MyNewWebPart um. Das Problem wird dadurch verursacht, dass die Datei SharePointProjectItem.spdata nicht aktualisiert wird. Öffnen Sie SharePointProjectItem.spdata und ersetzen Sie VisualWebPart1 durch MyNewWebPart. Dies behebt das Problem in den meisten Fällen.

Öffnen Sie jede Datei in der Projektmappe und stellen Sie sicher, dass keine Verweise auf VisualWebPart1 vorhanden sind. Falls vorhanden, ändern Sie sie manuell in MyNewWebPart.

1
Poodle

Ok, das kann sehr spät sein, wird aber für den Rest nützlich sein. Ich habe ein Webpart erstellt und erhielt die Fehlermeldung "Ein Webpart oder ein Web Form Control auf dieser Seite kann nicht angezeigt oder importiert werden. Der Typ wurde nicht gefunden oder ist nicht als sicher registriert."

Ich dachte mir, dass ich ein Chart in diesem Webpart verwende, und nachdem ich die Referenz des Charts entfernt hatte, funktionierte es. Daher muss das Chart-Steuerelement auch als typsicher markiert werden.

Stellen Sie sicher, dass alle Referenzen im Webpart typsicher sind.

1
Tiger

Geo,

Es ist schon eine Weile her, seit ich mit Webparts gearbeitet habe, aber ich habe die Schritte hier erläutert:

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

Vielleicht gibt es da etwas, das helfen kann.

Anthony :-)

0
IrishChieftain

Wie Tim Scarborough bereits erwähnt hat, kann dies passieren, wenn Sie den Namespace ändern und nicht alle Quelldateien aktualisieren (da dies nicht automatisch erfolgt). Nur zur Veranschaulichung bestand in meinem Fall das Problem darin, dass die Webpart-Klasse einen neuen Namespace a.b hatte. Ich habe jedoch vergessen, diese in der Webpart-Datei zu aktualisieren :

<?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

Wenn Sie die Lösung bereits gefunden haben, ist das großartig. Aber hier ist ein Tipp für jemanden, der mehr sucht. Wenn Sie ein neues Webpart oder ein visuelles Webpart hinzugefügt haben und einfach den Namespace in den Dateien wie Code-Dateien oder Element.xml oder sogar .webpart-Datei) ersetzen, kann dieses Problem immer noch auftreten. Der Grund liegt wie oben erwähnt. Der Namespace wurde in. spdata file nicht geändert. Dies ist eine Datei, die von Visual Studio selbst erstellt wurde. Um sicher zu gehen, checken Sie die Virtual Directories in der Inetroot ein. Wenn der Namespace noch der ältere ist, führen Sie eine Suche in Ihrer Lösung durch und ermitteln Sie den Konflikt. Höchstwahrscheinlich in der Datei project.spdata, die von allen ignoriert wird.

0
user2473872