Question

Est-il possible de définir une grande partie, sinon la totalité, web.config d'une application ASP.NET dans le code? Si c'est le cas, comment? Voulez-vous utiliser un IHttpModule? Dans la même veine, pouvez-vous résoudre un IHttpHandler dans ledit module pour traiter toutes les demandes entrantes?

Modifier 1: Le dernier bit a été incité à commettre par cette réponse une autre question .

Edit 2: Ce que je veux vraiment faire est de modules ajouter / supprimer des gestionnaires et dans le code par opposition à la web.config. J'ai probablement besoin d'au moins définir un module dans le web.config qui permettrait à ce sujet. Puis-je enregistrer puis des modules supplémentaires et les gestionnaires? Je suis juste d'explorer les possibilités.

Était-ce utile?

La solution

Au lieu de modifier la configuration, vous pouvez enregistrer HttpHandlers au démarrage de l'application dans le code en utilisant la PreApplicationStartupMethod. Exemple de code (de blog de Nikhil Kothari):

[assembly: PreApplicationStartMethod(typeof(UserTrackerModule), "Register")]

namespace DynamicWebApp.Sample {

    public sealed class UserTrackerModule : IHttpModule {

        #region Implementation of IHttpModule
        void IHttpModule.Dispose() {
        }

        void IHttpModule.Init(HttpApplication application) {
            application.PostAuthenticateRequest += delegate(object sender, EventArgs e) {
                IPrincipal user = application.Context.User;

                if (user.Identity.IsAuthenticated) {
                    DateTime activityDate = DateTime.UtcNow;

                    // TODO: Use user.Identity and activityDate to do
                    //       some interesting tracking
                }
            };
        }
        #endregion

        public static void Register() {
            DynamicHttpApplication.RegisterModule(delegate(HttpApplication app) {
                return new UserTrackerModule();
            });
        }
    }
}

Voir aussi le poste de Phil Haack, Trois cachés dans ASP.NET extensibilité Gems 4 .

Autres conseils

Vous pouvez le modifier à l'exécution. Les instructions et les pièges possibles sont décrites ici: http: //www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx

Je l'ai vu plusieurs applications Web qui modifient la configuration lors d'une installation ou d'un processus de maintenance. (DotNetNuke il fait lors de l'installation, et AspDotNetStorefront modifie plusieurs paramètres dans le cadre de l'assistant de configuration.)

Mais rappelez-vous que chaque fois que vous changez le web.config, les besoins d'applications recompiler, il peut donc être une gêne. Vous feriez mieux de sauvegarder les réglages hors dans une base de données et d'utiliser ceux où vous pouvez. Plus facile à modifier et moins perturbateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top