Frage

Ich habe das User Controls Project (UI) und benutze mit ihnen AJAX -Erweiterungs -Toolkit. Das dll von AJAX Extension Toolkit wird im Projekt verwiesen. Das Projekt wird erfolgreich zusammengestellt.

Ein weiteres Projekt unter derselben Lösung, das WSPBuilder -Projekt ist (Bereitstellung). Wenn Sie UI -Projekt erstellen, werden alle Steuerelemente kopiert, um das Projektverzeichnis bereitzustellen 12\TEMPLATE\CONTROLTEMPLATES und ein dll des UI -Projekts auch kopiert zu GAC Mappe. (Zum Kopieren verwende ich Ereignisse nach dem Bau)

Erstellen Sie dann das Projekt mit WSPBuilder Build und bereitstellen Sie bereit. Ich erhalte Fehlermeldung:

An error occurred during the processing of . Unknown server tag 'asp:ScriptManager'.

Bitte sagen Sie nicht, dass ich das web.config manuell addiert und die AJAX -Erweiterung als sichere Kontrolle hinzufügen und markieren kann. Ich werde das nicht tun.

Eine bessere Lösung?

PS: Ich verwende WSPBuilder, STSDEV und VSEWSS.

BEARBEITEN

Vielen Dank an Chris. Das Problem war:

In diesem Fall denke ich, dass es andere Elemente in Web.config sind, die Sie fehlen - die Ajax -Erklärungen. Unter anderem benötigen Sie Folgendes in Ihrem Web.config, damit .NET weiß, wie man die SkriptManager -Klasse findet:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Aber dieses Problem geht an meiner Seite etwas komisch. Ich musste setzen enableSessionState zu true von pages Tag unter system.web und Folgendes übernehmen:

<add name=”Session” type=”System.Web.SessionState.SessionStateModule” />

Ich dachte, Ajaxextesion.dll in GAC kann dieses Problem lösen. Ich habe vermieden, eine Funktion zum Ändern von Web.config zu schreiben. Kann ich das auch in Manifest.xml tun?

Bitte vorschlagen!

War es hilfreich?

Lösung

Der Fehler, den Sie sehen, scheint nicht mit dem SafeControls -Eintrag zusammenhängen. Wenn dies der Fall war, sehen Sie eine Meldung mit der Aufschrift "Ausgewählte Webparts nicht hinzufügen können. Ein Web -Teil oder ein Webformularsteuerung auf dieser Seite kann nicht angezeigt oder importiert werden. Der Typ ist nicht als sicher registriert."

In diesem Fall denke ich, dass es andere Elemente in Web.config sind, die Sie fehlen - die Ajax -Erklärungen. Unter anderem, Sie benötigen Folgendes in Ihrem Web.config, damit .NET weiß, wie Sie die Skriptmanager -Klasse finden:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Sie haben ein paar Optionen:

  • Verwenden Sie die Funktion im beliebten SharePoint Funktionen Codeplex -Projekt Dies führt zu Änderungen von Web.config
  • Schreiben Sie Ihren eigenen Code, um die web.config -Änderungen mithilfe der SPWebConfigModification vorzunehmen.

Die vollständigen Details der erforderlichen Änderungen von Web.config sind Hier in Mike Ammerlaans Blog detailliert.

Überprüfen Sie die Version von AJAX, die Sie verwenden, gegen die von Ihnen verwendeten Anleitung/Samples.

Andere Tipps

Ein Kommentar von der WSPBuilder -Website.

Gute Arbeit! Das Hinzufügen von Dlls von Drittanbietern hat großartig funktioniert, als ich AJAX und das AJAX -Steuerungstromwerk bereitstellte. Ich habe eine Funktion erstellt, um alle web.config -Änderungen vorzunehmen, und habe den GAC Reference -Ordner verwendet, um das Steuertoolkit -DLL zu enthalten. Hat auch mit mehreren Servern auf der Farm großartig funktioniert. Das war ein Lebensretter!

Geben Sie also die DLL in Ihr WSPBuilder -Projekt ein, um sie einzuschließen, und erstellen Sie eine Funktion, um Web.config zu ändern. Sehen dieser Beitrag Informationen zum Ändern von Web.config mit einer Funktion.

Zuerst müssen Sie die Montage hinzufügen, die Sie im VS -Projekt bereitstellen möchten. Sie können beispielsweise einen "LIBS" -Fordner erstellen, um alle externen Baugruppen zu speichern, die Sie auf Ihrer Teamseite benötigen.

Anschließend müssen Sie die Manifest.xml -Datei Ihrer Team -Site -Definition bearbeiten. Sie finden diese Datei in dem Ordner "PKG" in Ihrem Projekt. Beachten Sie, dass der PKG -Ordner nur dann verfügbar ist, wenn Sie die Lösung mindestens einmal bereitgestellt haben.

Ok, jetzt musst du eine neue hinzufügen <Assembly> Kinderelement zum <Assemblies> Element in der Manifest.xml -Datei Ihrer Teamdefinitionslösung. Mit dem Attribut "DeploymentTarget" können Sie definieren, ob die Baugruppe im GAC oder im Bin -Ordner der Webanwendung bereitgestellt werden soll.

Das folgende Beispiel zeigt, wie das <Assemblies> Das Element sieht so aus, als ob Sie dem GAC die "teamSteDeFinition1.dll" hinzufügen möchten und die "testSolution.dll" dem Bin -Ordner hinzufügen möchten. Wenn Sie einen sicheren Steuereintrag für Ihre Baugruppe benötigen, können Sie diese auch hinzufügen.

<Assemblies>
    <Assembly Location="TeamSiteDefinition1.dll" DeploymentTarget="GlobalAssemblyCache" />
    <Assembly Location="TestSolution.dll" DeploymentTarget="WebApplication">
       <SafeControls>
          <SafeControl ..... />
       </SafeControls>
    </Assembly>
</Assemblies>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top