Frage

Ich habe mich gefragt, ob es eine gute Möglichkeit ist, in die Application_Start einer Sharepoint 2007-Website einzuhaken, wenn eine Funktion zu entwickeln? Ich weiß, es kann direkt die Global.asax-Datei im Stammordner bearbeiten, aber gibt es eine Möglichkeit, dies zu tun, so dass es mit der Funktion eingesetzt wird?

Danke!

War es hilfreich?

Lösung

Dies ist tatsächlich möglich, aber es ist nicht mit der Datei Global.asax.

Viele von Microsofts Beispiele zeigen Verdrahtung Code in über das Global.asax, aber dies ist kein Best-Practices-Ansatz, wenn es um Sharepoint kommt. Idealerweise sollte der Code als Feature verpackt erhalten und über WSP eingesetzt (wie Sie bereits wissen).

Der Schlüssel liegt in den Code in Frage als ein Httpmodule Implementierung (das heißt, ein Typ, der die IHttpModule Schnittstelle implementiert) und die Verdrahtung in die ASP.NET-Pipeline Wartung Ihre Sharepoint-Anwendung. Grob gesagt, das sind die Schritte:

  1. Erstellen Sie eine Klasse, die den IHttpModule-Schnittstelle implementiert.
  2. Implementieren Sie die Init-Methode in Ihrem Httpmodule; dies wird aufgerufen, wenn die Httpapplication (in diesem Fall die SPHttpApplication) aufgebaut ist, und es gibt Ihnen die Möglichkeit, die Verarbeitung auszuführen, Draht-up Ereignis Delegierten für andere Pipeline-Veranstaltungen, etc.
  3. Geben Sie eine SPFeatureReceiver Erstellen Sie Ihre Httpmodule von Ziel web.config-Dateien auf die Aktivierung und Deaktivierung wird hinzuzufügen und zu entfernen sind. Dies erfolgt die SPWebConfigModification Typ mit dem Knoten in Ziel web.config-Dateien zu aktualisieren.
  4. Paket alle als Eigenschaft und bereitstellen über WSP.

Für weitere Informationen über Httpmodule Entwicklung finden Sie unter http://msdn.microsoft .com / en-us / library / ms227673.aspx . Für einige detaillierte Angaben über die SPWebConfigModification Typ finden Sie unter http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx .

Ergebnis: eine Klasse, den Start der Anwendung verarbeiten kann und ausfahrbaren über Eigenschaft. Keine manuelle Datei erforderlich Hacking.

zuletzt mit einem benutzerdefinierten Caching-Provider (IVaryByCustomHandler), der sich mit dem SPHttpApplication für Rückrufe registrieren benötigt, wenn es gestartet

-

Ich habe dies erfolgreich in einer Reihe von Szenarien verwendet.

Auch wenn Sie Ihre Frage ein bisschen älter ist, ich hoffe, das hilft!

Andere Tipps

Mein Bauchgefühl ist, dass es nicht möglich sein wird. Application_Start wird durch die Laufzeit-Engine als asp.net genannt wird gestartet, so dass es sehr wahrscheinlich nicht eine Möglichkeit sein kann, den Global.asax außerhalb des Modifizierens des Handlers einzuhaken - z.B. der Haken muss deklarative und hartnäckig sein, da sie die Anwendung Stopp- / Entladen überleben muss. Also, wenn Sie auf die global.asax zu schreiben, ich denke, man könnte eine Eigenschaft Eventreceiver schreibt die Änderung durchzuführen.

Abgesehen davon, können Sie geben weitere Details über das Warum? Vielleicht gibt es andere Anstellwinkel. Die Idee, die global.asax on the fly zu modifizieren macht mich krank fühlen. Das kann nicht gut sein.

Oisin

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top