Domanda

È possibile definire, in gran parte, se non tutta, web.configurazione di un ASP.NET applicazione in codice?Se sì, come?Utilizzare un IHttpModule?Nella stessa vena, si può risolvere un IHttpHandler entro il suddetto modulo per gestire tutte le richieste in arrivo?

Edit 1: L'ultimo bit è stato istigato da questa risposta ad un'altra domanda.

Edit 2: Quello che voglio davvero fare è aggiungere/rimuovere i moduli e gestori di codice in contrapposizione al web.config.Probabilmente ho bisogno di almeno un modulo web.config che permetterebbe questo.È possibile registrare ulteriori moduli e gestori?Sto solo valutando le possibilità.

È stato utile?

Soluzione

Invece di modificare la configurazione, è possibile registrare gestori HTTP all'avvio dell'applicazione nel codice utilizzando il PreApplicationStartupMethod. Esempio di codice (da di Nikhil Kothari post sul blog ):

[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();
            });
        }
    }
}

Si veda anche il post di Phil Haack, Tre Hidden Gems estensibilità in ASP.NET 4 .

Altri suggerimenti

È possibile modificare a run-time.Le istruzioni e le possibili insidie sono riportati di seguito: http://www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx

Ho visto diverse applicazioni web per modificare la configurazione durante l'Installazione o Manutenzione.(DotNetNuke fa durante l'installazione, e AspDotNetStorefront modifiche varie impostazioni come parte della procedura guidata di configurazione.)

Ma ricordate che ogni volta che si cambia il web.la configurazione, l'applicazione ha bisogno di ricompilare, e quindi possono essere un fastidio.Sarebbe meglio salvare le impostazioni in un database e l'utilizzo di quelli in cui è possibile.Più facile da modificare e meno dirompente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top