web-dev-qa-db-fra.com

Que fait WebActivator?

Ce code a été généré pour moi après avoir ajouté le code de structure d'entité en premier pour SQL Server CE à l'aide de NuGet. Ils n'ont apporté aucun changement à aucun autre fichier. Le fichier SQLCEEntityFramework.cs a été créé et placé dans App_Start dossier.

Est-ce à dire qu'il s'exécute automatiquement ou quelque chose? La même chose s'est produite lorsque j'ai ajouté Ninject pour MVC 3. Aucun code n'a été ajouté au global.ascx fichier donc je n'ai aucune idée si son plug and play ou je dois configurer quelque chose.

[Assembly: WebActivator.PreApplicationStartMethod(typeof(StackTorrents.WebUI.App_Start.SQLCEEntityFramework), "Start")]
47
Shawn Mclean

Selon:

http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx

Ce nouvel attribut vous permet de faire exécuter le code très tôt dans le pipeline ASP.NET au démarrage d'une application. Je veux dire bien avant, même avant Application_Start. Cela se produit également avant que le code dans votre dossier App_code (en supposant que vous ayez du code dedans) ait été compilé. Pour utiliser cet attribut, créez une bibliothèque de classes et ajoutez cet attribut en tant qu'attribut de niveau assemblage. Un endroit commun pour ajouter cela serait dans la classe AssemblyInfo.cs dans le dossier Propriétés.

42
John Farrell

Pour clarifier, cela vous donne un moyen de vous connecter à plusieurs événements de démarrage et d'arrêt d'application SANS avoir à modifier les fichiers de code existants (auparavant, vous deviez modifier Globals.asax.cs).

C'est surtout un gros problème lors de la création de packages car ces événements sont vraiment utiles pour le démarrage des modules Http et il est vraiment difficile d'écrire du code dans des fichiers existants.

19
George Mauer