Os arquivos Global.asax, às vezes chamados de arquivos de aplicativos ASP.NET, fornecem um local central para responder a eventos em nível de aplicativo ou em nível de módulo. Você pode usar esse arquivo para implementar a segurança do aplicativo e outras tarefas.
O arquivo Global.asax é configurado para que qualquer solicitação HTTP direta (por meio da URL) seja rejeitada automaticamente, para que os usuários não possam baixar ou visualizar seu conteúdo. A estrutura de páginas ASP.NET reconhece automaticamente quaisquer alterações feitas no arquivo Global.asax. A estrutura da página ASP.NET reinicia o aplicativo após a alteração do Global.asax, o que inclui fechar todas as sessões do navegador, remover todas as informações de estado e reiniciar o domínio do aplicativo.
O arquivo Global.asax herda da classe HttpApplication, que mantém um pool de objetos HttpApplication e aloca objetos no pool para aplicativos quando necessário. O arquivo Global.asax contém os seguintes eventos:
· Application_Init: Este evento é acionado quando a aplicação é instanciada ou chamada pela primeira vez. Ele será chamado para todas as instâncias do objeto HttpApplication.
· Application_Disposed: Acionado antes da aplicação ser destruída. Este é um local ideal para limpar recursos usados anteriormente.
· Application_Error: Este evento é disparado quando uma exceção não tratada é encontrada na aplicação.
· Application_Start: Este evento é disparado quando a primeira instância da classe HttpApplication é criada. Ele permite criar objetos que podem ser acessados por todas as instâncias do HttpApplication.
· Application_End: Este evento é disparado quando a última instância da classe HttpApplication é destruída. Ele é acionado apenas uma vez durante a vida útil de um aplicativo.
· Application_BeginRequest: Acionado quando uma solicitação de aplicação é recebida. Para uma solicitação, é o primeiro evento a ser acionado. A solicitação geralmente é uma solicitação de página (URL) inserida pelo usuário.
· Application_EndRequest: Último evento solicitado pela aplicação.
· Application_PreRequestHandlerExecute: Este evento é acionado antes que o framework de páginas ASP.NET comece a executar um manipulador de eventos, como uma página ou serviço Web.
· Application_PostRequestHandlerExecute: Este evento é disparado quando o framework de páginas ASP.NET termina de executar um manipulador de eventos.
· Applcation_PreSendRequestHeaders: Este evento é acionado quando o framework de páginas ASP.NET envia cabeçalhos HTTP para o cliente solicitante (navegador).
· Application_PreSendContent: Este evento é acionado quando o framework de páginas ASP.NET envia conteúdo ao cliente solicitante (navegador).
· Application_AcquireRequestState: Este evento é acionado quando o framework de páginas ASP.NET obtém o estado atual (estado da sessão) relacionado à solicitação atual.
· Application_ReleaseRequestState: Este evento é acionado quando o framework de páginas ASP.NET conclui a execução de todos os manipuladores de eventos. Isso fará com que todos os módulos de estado salvem seus dados de estado atuais.
· Application_ResolveRequestCache: Este evento é acionado quando o framework de páginas ASP.NET conclui uma solicitação de autorização. Ele permite que o módulo de cache atenda solicitações do cache, ignorando assim a execução de manipuladores de eventos.
· Application_UpdateRequestCache: Este evento é acionado quando o framework de páginas ASP.NET conclui a execução do manipulador de eventos, permitindo que o módulo de cache armazene os dados de resposta para uso na resposta a solicitações subsequentes.
· Application_AuthenticateRequest: Este evento é disparado quando o módulo de segurança estabelece uma identidade válida para o usuário atual. Neste momento, as credenciais do usuário serão verificadas.
· Application_AuthorizeRequest: Este evento é acionado quando o módulo de segurança confirma que um usuário pode acessar o recurso.
· Session_Start: Este evento é acionado quando um novo usuário acessa o site da aplicação.
· Session_End: Este evento é acionado quando a sessão de um usuário expira, termina ou quando ele sai do site do aplicativo.
Uma questão importante no uso desses eventos é saber a ordem em que eles são disparados. Os eventos Application_Init e Application_Start são disparados uma vez quando o aplicativo é iniciado pela primeira vez. Da mesma forma, os eventos Application_Disposed e Application_End são acionados uma vez quando o aplicativo é encerrado. Além disso, eventos baseados em sessão (Session_Start e Session_End) são usados somente quando os usuários entram e saem do site. Os eventos restantes tratam de solicitações de aplicativos. A ordem em que esses eventos são acionados é:
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
·
Application_ResolveRequestCache · Application_AcquireRequestState
· Application_PreRequestHandlerExecute
· Application_PreSendRequestHeaders
· Application_PreSendRequestContent
· <<Código de Execução>>
· Application_PostRequestHandlerExecute
·
Application_ReleaseRe.
questState · Application_UpdateRequestCache· Application_EndSolicite
esses eventos Freqüentemente usado para fins de segurança. O exemplo C# a seguir demonstra os diferentes eventos Global.asax, usando o evento Application_Authenticate para concluir a autenticação baseada em formulário por meio de cookies. Além disso, o evento Application_Start preenche uma variável de aplicativo e Session_Start preenche uma variável de sessão. O evento Application_Error exibe uma mensagem simples descrevendo o erro ocorrido.
protegido void Application_Start (remetente do objeto, EventArgs e) {
Application["Título"] = "Amostra Builder.com";
}
protegido void Session_Start(Remetente do objeto, EventArgs e) {
Sessão["startValue"] = 0;
}
protegido void Application_AuthenticateRequest (objeto remetente, EventArgs e) {
//Extrai o cookie de autenticação de formulários
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[nomedocookie];
if(null == authCookie) {
// Não há cookie de autenticação.
retornar;
}
FormsAuthenticationTicket authTicket = null;
tentar {
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
} catch(Exceção ex) {
// Registra detalhes da exceção (omitido para simplificar)
retornar;
}
if (null == authTicket) {
// Falha no cookie ao descriptografar.
retornar;
}
// Quando o ticket foi criado, a propriedade UserData foi atribuída
// uma string delimitada por barras verticais de nomes de funções.
string[2] funções
papéis[0] = "Um"
funções[1] = "Dois"
//Cria um objeto Identidade
FormsIdentity id = new FormsIdentity(authTicket);
// Este principal fluirá durante toda a solicitação.
GenericPrincipal principal = novo GenericPrincipal(id, funções);
// Anexa o novo objeto principal ao objeto HttpContext atual
Contexto.Usuário = principal;
}
protegido void Application_Error(Remetente do objeto, EventArgs e) {
Response.Write("Erro encontrado.");
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475565.html