
pt">
Neste artigo vamos conhecer o IHttpModule, um importante recurso do ASP.NET. Através dele, vamos prover algumas funcionalidades interessantes para o nosso Web Site, muito comuns e encontradas na maioria dos aplicativos Web. São elas:
· Funcionalidade de aviso de manutenção do sistema web;
· Criação de um log de estatística;
· Criação de uma chave de ativação no estilo “serial-number” do Windows;
· Bloqueio de sistema por IP;
· Como fazer redirecionamento de páginas no estilo web 2.0.
O que é IHttpModule?
O IHttpModule é o módulo HTTP chamado sempre que houver uma requisição em seu sistema Web. O IHttpModule é geralmente utilizado para implementar uma camada de segurança, log de acesso ou cabeçalhos/rodapés personalizados, entre outros.
Sistema de aviso de manutenção
É muito comum quando é necessário realizar alguma manutenção
O asp.net possui um recurso muito interessante. Para tirar a aplicação do ar por algum tempo, basta criar um arquivo .html na raiz do sistema chamado “app_offline.htm”. Automaticamente toda a aplicação sai do ar. Embora prático este recurso pode nos dar alguns problemas:
· E se eu quiser avisar o usuário algum tempo antes?
· Como fazer um agendamento programado, automático?
· Como fazer com que somente eu e minha equipe tenhamos acesso ao sistema em produção, para poder fazer um teste se está tudo 100% antes de lançar para os demais usuários?
Na aplicação a seguir, procurei utilizar conceitos rotineiros do asp.net, que podem nos ajudar muito no dia-a-dia.
Mãos à obra
Primeiro vamos simular o “app_offline.htm”, criando o nosso próprio arquivo (AplicacaoOffline.htm) que funcionará de forma similar, porém com recurso de agendamento, e bloqueio por IP, para que nenhum outro usuário, além dos administradores, possa acessar a aplicação em período de manutenção.
Abra o Visual Studio e crie uma aplicação WEB. No arquivo de configuração, web.config adicione quatro valores no bloco appsettings (Listagem 1), a Tabela 1 explica com maiores detalhes a necessidade de cada propriedade.
Listagem 1. Informações no web.config para simularmos o app_offline.htm
|
Chave (Key) |
O que significa? |
|
MeuIP |
Será informado o seu IP. Para que quando a aplicação web fique em manutenção, somente o seu IP possa ter acesso para teste. Os demais IP verão uma mensagem de “em manutenção”. |
|
DataManutencaoInicial |
Data inicial da manutenção agendada. A partir desta data / hora será disponibilizada automaticamente uma mensagem aviso e bloqueado o acesso ao sistema. Formato: dd/MM/aaaa HH:mm. (menos para o IP cadastrado) |
|
DataManutencaoFinal |
Data final da manutenção agendada. A partir desta data / hora será disponibilizado o acesso normal ao sistema. Formato: dd/MM/aaaa HH:mm (menos para o IP cadastrado) |
|
ObedecerHorario |
Esta variável é para poder simular o arquivo “app_offline.htm” de forma mais fiel. Se o valor for “sim”, é levado em consideração o horário. Se for “não” é ignorado o horário, e levado em consideração apenas a existência do nosso arquivo “AplicacaoOffline.htm”. Caso o arquivo exista, e o valor seja “nao”, o sistema entra automaticamente em manutenção, assim com o arquivo padrão “app_offline.html” |
Tabela 1. Propriedades que devem ser adicionadas no arquivo web.config
A seguir, crie um arquivo na raiz, chamado AplicacaoOffline.htm; ele será a mensagem que o usuário verá enquanto o sistema estiver
Listagem 2. Exemplo de arquivo AplicacaoOffline.htm.
/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
/www.w3.org/1999/xhtml" >
Estamos em manutenção!
Estamos em manutenção, programada das @MeuHorarioInicial as @MeuHorarioFinal.
Agradecemos a sua visita!
Vamos agora criar a classe que conterá as principais funcionalidades da manutenção. Caso o seu projeto web não tenha ainda a pasta App_Code (Figura 1) crie esta pasta agora, e adicione uma classe (manutencao) na pasta.

Figura 1. Adicionando a pasta App_Code no seu projeto
Utilizando o arquivo manutencao.vb vamos criar inicialmente uma enumeração (Listagem 3) dos possíveis estados de manutenção, a Tabela 2 demonstra as propriedades da nossa classe que estão implementadas na Listagem 4. Depois de criada as propriedades, devemos criar o método Limpar que atribuirá os valores iniciais, ao ser instanciado um novo objeto “manutenção” (Listagem 5). Depois criaremos um método (Listagem 6) que verificará a existência do arquivo AplicacaoOffline.htm, retornando True caso exista, e false, caso não exista. Esta função é pública, pois poderá ser acessada de todas as páginas aspx.
Listagem 3. Enumeração dos possíveis estados da manutenção
Public Enum estadoManutencao
[Desativada] = 0
[EmAguardo] = 1
[Ativa] = 2
End Enum
|
Propriedade |
Descrição |
|
ArquivoManutencao |
Propriedade que determina o caminho físico do arquivo. |
|
DataManutencaoInicial |
Propriedade que retorna a data de manutenção incial. Obs.: É string pois pode ser vazio (desativado). |
|
DataManutencaoFinal |
Propriedade que retorna a data final de manutenção. Obs. É string pois pode ser vazio (desativado). |
|
obedecerHorario |
Propriedade que retorna se o sistema deve obedecer o horário, ou não. Se não tiver como obedecer, ele simplesmente ignora o horário, e valida a manutenção pelo arquivo. |
| ... |