Pergunta

É possível definir uma parte grande, se não o Web.config inteiro de um aplicativo ASP.NET no código? Se sim, como? Você usaria um ihttpmodule? Na mesma linha, você pode resolver um ihttphandler dentro do referido módulo para lidar com todas as solicitações de entrada?

Editar 1: O último bit foi instigado por Esta resposta para outra pergunta.

Editar 2: O que eu realmente quero fazer é adicionar/remover módulos e manipuladores no código em oposição ao web.config. Eu provavelmente preciso pelo menos definir um módulo no web.config que permitiria isso. Posso registrar módulos e manipuladores adicionais? Estou apenas explorando possibilidades.

Foi útil?

Solução

Em vez de modificar a configuração, você pode registrar httphandlers na inicialização do aplicativo no código usando o PrEApplicationStartupMethod. Código de exemplo (de Postagem do 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();
            });
        }
    }
}

Veja também o post de Phil Haack, Três gemas de extensibilidade oculta no Asp.net 4.

Outras dicas

Você pode alterá-lo em tempo de execução. Instruções e possíveis armadilhas são descritas aqui: http://www.beansoftware.com/asp.net-tutorials/modify-web.config-run time.aspx

Vi vários aplicativos da Web que modificam a configuração durante um processo de instalação ou manutenção. (DotNetnuke faz isso durante a instalação e aspdotnetStorefront altera várias configurações como parte do Assistente de Configuração.)

Mas lembre -se de que toda vez que você muda o web.config, o aplicativo precisa recompilar, para que possa ser um aborrecimento. É melhor você economizar configurações em um banco de dados e usar aqueles onde puder. Mais fácil de modificar e menos perturbador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top