3 Stimmen

Bevorzugte Methode zur Einrichtung und Ausführung von Code in Application_Start

Was ist der bevorzugte Weg zum Einhaken und einige Code in Application_Start und Application_Endrequest ausführen, ohne den Code in der MvcApplication-Klasse jedes Mal zu setzen?

Vielleicht gibt es ein Ereignis, ein Attribut oder etwas, das ich in asp.net 4 einhängen kann?

3voto

marcind Punkte 52454

Es gibt eine Vielzahl von Ereignisse für die Klasse HttpApplication . Allerdings brauchen Sie noch etwas, das den Event-Hookup bootstrappen kann.

Sie können sich ansehen PreApplicationStartAttribute . Damit können Sie Code einbinden, der ausgeführt wird, bevor die Anwendung kompiliert wird (obwohl die Anwendungsinstanz zu diesem frühen Zeitpunkt noch nicht verfügbar ist).

David Ebbo hat auch ein ähnliches System mit der Bezeichnung WebActivator .

0 Stimmen

Ich glaube nicht, dass ich das EndRequest-Ereignis einrichten kann, wenn ich PreApplicationStartAttribute verwende, aber vielleicht mit dem WebActivator

0 Stimmen

Um eine Verbindung zu EndRequest herzustellen, schreiben Sie ein IHttpModule und registrieren es in Web.config im Abschnitt <modules>.

2voto

Ed DeGagne Punkte 3211

Das ist keine korrekte Aussage, dass " können Sie Code einbinden, der ausgeführt wird, bevor die Anwendung kompiliert wird. "

WebActivator-Klassen, die Sie erstellen, werden tatsächlich in die Assembly kompiliert, ermöglichen es Ihnen aber, sich zur Laufzeit in 3 Ereignisse einzuklinken:

1.) PreApplicationStartMethod 2.) PostApplicationSTartMethod 3.) ApplicationShutdownMethod

Aus David Ebbo's Beschreibung:

"WebActivator ist ein NuGet-Paket, das es anderen Paketen ermöglicht, auf einfache Weise Startup- und Shutdown-Code in eine Webanwendung einzubringen. Das ist eine viel sauberere Lösung, als die global.asax mit der Startlogik von vielen Paketen zu modifizieren."

Die Verwendung von WebActivator ist nicht nur auf Startup-Code für andere Pakete beschränkt, sondern kann auch für Startup-Code (Bootstrapping) für Ihre Anwendung verwendet werden.

Ich verwende es zum Beispiel, um meine Unity-Abhängigkeiten, mein Combres-Setup und mein 51DegreesMobi-Setup in einem Projekt einzurichten und zu konfigurieren, das ich kürzlich mit MVC3 abgeschlossen habe. Es ermöglicht mir, eine separate Klassendatei für jedes dieser Elemente zu haben, ohne dass ich eine einzige Codezeile in Global.asax einfügen muss.

Es ist auch eine viel bessere Alternative zu den .NET 4 PreApplicationStartMethod in, dass Sie viele Klassen, die die WebActivator.PreStartupMethod haben können und sie werden ALLE vor App-Start ausgeführt, im Gegensatz zu den .NET 4 Attribut, in dem ich glaube, Sie sind nur erlaubt, einmal zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X