Pregunta

¿Es posible definir una porción grande, si no la totalidad, de web.config de una aplicación ASP.NET en código? ¿Si es así, cómo? Usarías un IHttpModule? En el mismo sentido, se puede resolver un IHttpHandler dentro de dicho módulo para manejar todas las peticiones entrantes?

Editar 1: La última parte fue instigado por esta respuesta a otra pregunta.

Editar 2: Lo que realmente quiero hacer es añadir / quitar módulos y controladores de código en comparación con el web.config. Probablemente necesito al menos, a un módulo en el web.config que permitiría esto. ¿Puedo continuación, registrar módulos y controladores adicionales? Sólo estoy explorando posibilidades.

¿Fue útil?

Solución

En lugar de modificar la configuración, puede registrarse HttpHandlers al iniciarse la aplicación en código utilizando el PreApplicationStartupMethod. Ejemplo de código (de de Nikhil Kothari entrada de 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();
            });
        }
    }
}

También ver post de Phil Haack, tres gemas ocultas de extensibilidad en ASP.NET 4 .

Otros consejos

Se puede cambiar en tiempo de ejecución. Las instrucciones y los posibles peligros se describen aquí: http: //www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx

he visto varias aplicaciones web que modifican la configuración durante una instalación o proceso de mantenimiento. (DotNetNuke lo hace durante la instalación, y AspDotNetStorefront cambia varias configuraciones como parte del asistente de configuración.)

Pero recuerda que cada vez que cambie el web.config, las necesidades de aplicaciones para volver a compilar, por lo que puede ser una molestia. Usted sería mejor guardar la configuración en una base de datos y el uso de aquellos en los que se puede. Más fácil de modificar y menos perjudicial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top