Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
834
Assunto : ASP.NET
Titulo: Log de um shutdown de aplicação ASP.NET

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Uma necessidade frequente em aplicações em produção é identificarmos exatamente a causa do shutdown da aplicação, quando acontecer.

Temos um evento Application_End no Global.asax que podemos interceptar, mas para pegarmos informações sobre o real motivo do shutdown teremos que recorrer a alguns métodos privados de alguns objetos.

Veja como isso pode ser feito :

public void Application_End() {


HttpRuntime runtime = (HttpRuntime) typeof(System.Web.HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | | BindingFlags.Static | BindingFlags.GetField, null, null);

Esta primeira linha de código utiliza o atributo _theRuntime, que é um atributo privado e estático da classe HTTPRuntime, para obter uma referência ao HTTPRuntime atual.

if (runtime == null)
return;


string shutDownMessage = (string) runtime.GetType().InvokeMember("_shutDownMessage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null);

Agora precisamos obter a mensagem de shutdown, contida em um atributo privado chamado _shutdownMessage. É um atributo da instância HTTPRuntime, então observe como passamos a instância HTTPRuntime como um dos parâmetros.

string shutDownStack = (string) runtime.GetType().InvokeMember("_shutDownStack", BindingFlags.NonPublic
| BindingFlags.Instance
| BindingFlags.GetField,
null,
runtime,
null);

Eis mais uma informação privada que obtemos, o stack de chamadas no momento do shutdown

if (!EventLog.SourceExists(".NET Runtime")) {

EventLog.CreateEventSource(".NET Runtime", "Application");

}



EventLog log = new EventLog();

log.Source = ".NET Runtime";

log.WriteEntry(String.Format("\r\n\r\n_shutDownMessage={0}\r\n\r\n_shutDownStack={1}",

shutDownMessage,

shutDownStack),

EventLogEntryType.Error);

Por fim, a gravação no log de eventos. Neste caso o código está inclusive verificando a existencia de um eventSource específico para este evento

Pronto, com isso no global.asax teremos mensagens detalhadas sobre o shutdown das aplicações no event viewer


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 1/31/2017 11:38:00 AM
nome: HFdaGccrIpxcRFhDi
email: derby451@hotmail.com
comentário:
8jujvL http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 8:59:00 AM
nome: epLYpDfUavCsvbmn
email: jogcbfn@hotmail.com
comentário:
4t0RIL http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 8:59:00 AM
nome: ZnYUgYFluxEyDUHFr
email: derby451@hotmail.com
comentário:
L8zw2z http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/2/2017 1:28:00 PM
nome: UtrACZcubsbmgoguZ
email: jfvynms4281rt@hotmail.com
comentário:
J3eUbh http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

data: 12/30/2016 1:04:00 PM
nome: igElQjMLPFcyIsrzRw
email: jfvynms4281rt@hotmail.com
comentário:
GmAAEp http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br