Escrito na frente
Sobre o conteúdo relevante do IHttpModule, também me perguntaram durante a entrevista, e senti vagamente que essa interface possui um método Init, que pode registrar uma série de eventos com o método Init na classe de implementação. Em casa, neste fim de semana, realmente não há nada para fazer, mesmo que seja para checar e preencher as lacunas desse conhecimento.
Funciona o IHttpModule
Amigos que conhecem asp.net ciclo de vida devem saber que a execução do HttpModule é executada antes do HttpHandler, depois de executar uma série de eventos do HttpModule, depois executar o HttpHandler e então executar alguns eventos do HttpModule. Para detalhes, consulte o diagrama do ciclo de vida a seguir.
O HttpHandler é o lugar para lidar com a requisição http, o HttpModule é a "única maneira" para uma requisição HTTP, então você pode adicionar algumas informações necessárias sobre as informações da requisição HTTP antes que essa requisição HTTP seja passada para o centro real de processamento de requisições (HttpHandler), ou fazer algum trabalho adicional nas informações interceptadas da requisição HTTP. Ou, em alguns casos, simplesmente terminar requisições HTTP que atendam a certas condições, o que pode funcionar como um filtro.
Uma requisição HTTP será passada para o contêiner HttpHandler em algum momento (evento ResolveRequestCache) durante a entrega do contêiner HttpModule. Após esse evento, o contêiner HttpModule cria uma instância de entrada do HttpHandler, mas em vez de abrir mão do controle da requisição HTTP, ele continua disparando os eventos AcquireRequestState e PreRequestHandlerExcute. Após o evento PreRequestHandlerExcute, a janela HttpModule concede temporariamente controle ao contêiner HttpHandler para o processamento real de requisições HTTP.
Dentro do contêiner HttpHandler, o método ProcessRequest é executado para lidar com requisições HTTP. Após o HttpHandler do contêiner processar toda a requisição HTTP, ele retorna o controle ao HttpModule, que continua a passar a informação processada da requisição HTTP camada por camada até que ela seja retornada ao cliente.
Uma instância
Estrutura do projeto
Código MyHttpModule
Registre um HttpModule personalizado em web.config
Navegar página Default.aspx
Então, qual é a ordem de execução de uma série de eventos no ciclo de vida?
Navegue pelos resultados
Use o HttpModule para encerrar a solicitação Http
resultado
resumo
Aqui apresentamos a interface mais importante do ciclo de vida asp.net, o IHttpModule, que pode ser descrito como uma interface de eventos, pois no método Init na classe de implementação, vários eventos do ciclo de vida podem ser registrados, e diferentes lógicas podem ser definidas no evento.
|