Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«

Micro de mulher
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Controlando ocorrência de erros em ASP


Você também gostará de ler os seguintes artigos
Após este arquivo você gostará de estudar :

Uma das grandes brechas de segurança na internet é quando se exibe para o usuário final mensagens de erro do sistema. Mesmo que se faça um bom tratamento de erro, é muito difícil prever todos os erros possíveis e eventualmente as mensagens de erro aparecem.

Hackers utilizam tais mensagens para realizar a invasão do sistema. As mensagens de erro fornecem as informações técnicas que os hackers necessitam para entrar no sistema.

Primeiramente é necessário entender a sequencia de tratamento de erros que ocorre no Windows 2000.

O erro pode ter sido tratado pelo código. Neste caso o resultado será o que o programador desejar.

Caso o erro não tenha sido tratado o IIS trata diferentemente caso já tenha ocorrido alguma transmissão para o client e caso não tenha. Dai que o tratamento de erro pode mudar radicalmente se o buffer estiver ligado (o que é o default para o IIS 5.0, a partir do windows 2000) ou não.

A diferença é que, se já houver ocorrido alguma transmissão para o client o IIS obedece a regra indicada na aba app Debuging (depuração do aplicativo), que pode ser encontrada ao se clicar no botão configurations na aba home directory das propriedades de um site.

Segundo a especificação em app debugging, determina-se se a mensagem detalhada de erro do ASP deve ser exibida ao usuário ou se mostra-se uma mensagem padrão. Desta forma em desenvolvimento esta configuração deve estar definida para exibir a mensagem de erro detalhada, mas em produção deve exibir uma mensagem padrão, tipo "Volte mais tarde".

Mas, como citei, a configuração do app debuging só é seguida quando já houve transmissão para o client. Quando um erro ocorre em um momento em que ainda não ocorreu nenhuma transmissão para o client então o IIS gera o erro 500.100.

Gerando o erro 500.100 o IIS passa a obedecer as regras configuradas na aba custom errors das propriedades do site. Então aqui o resultado pode variar.

Se o site é o site default do IIS, ele está já configurado com o custom error apontando para um arquivo 500-100.asp contido fisicamente em \winnt\help\iishelp\common.

O Site default do IIS tem um diretório virtual chamado iisHelp que aponta para este caminho. Se o site em questão não for o default, a dica em http://www.bufaloinfo.com.br/dicas.asp?cod=237 explica como configurar o site para que as mensagens de erro sejam exibidas em ambiente de desenvolvimento.

Ok. Exibir as mensagens de erro é fácil. Mas e para o ambiente de produção ? Essa é a grande questão : No ambiente de produção as mensagens de erro não podem ser exibidas, mas devem ser logadas para consulta posterior. Como resolver este problema ?

A questão está justamente na personalização da página 500-100.asp e no fato de que esta página nos mostra um truque novo no ASP 3.0 : Server.GetLastError. Essa instrução nos devolve um objeto ASPError que fornece informações muito mais detalhadas sobre o erro do ASP do que o simples objeto ERR do VBScript. É baseado neste objeto que as páginas padrões de exibição de erro foram programadas e teremos que utiliza-lo também para gerar um log do erro ocorrido.

Ao programarmos a página 500-100.asp devemos lembrar que não sabemos que erro ocorreu, portanto não podemos abusar do uso de recursos do sistema. Por exemplo, se o banco caiu, não podemos gravar o log dentro do banco.

Por isso devemos gravar o log de forma mais simples possível, em um arquivo TXT, por exemplo. Desta forma precisaremos fazer uso do filesystemobject para realizar a gravação do log.

Veja então um exemplo simples de uma personalização da página 500-100.asp :

<%
Dim vDescricao
Dim vOrigiem
Dim vASPCode
Dim fso
Dim arq
dim linha

If Response.Buffer Then
Response.Clear
Response.Status = "500 Internal Server Error"
Response.ContentType = "text/html"
Response.Expires = 0
End If

Set objASPError = Server.GetLastError


If objASPError.ASPDescription > "" Then
vDescricao = objASPError.ASPDescription

ElseIf (objASPError.Description > "") Then
vDescricao = objASPError.Description
End If

vorigem = objASPError.File
If objASPError.ASPCode > "" Then vASPCode = objASPError.ASPCode

If objASPError.Line > 0 Then linha= objASPError.Line

Set fso = CreateObject("scripting.filesystemobject")
Set arq = fso.OpenTextFile("d:\Log\logWeb.txt", 8, True)

arq.WriteLine (vDescricao)
arq.WriteLine (vASPCode)
arq.WriteLine (vorigem)
arq.writeline("linha : " & linha)
arq.WriteBlankLines (3)


arq.Close
Set arq = Nothing
Set fso = Nothing

Response.write ("<HTML><HEAD><TITLE></TITLE></HEAD><BODY><center>")
Response.write ("<table width='100%' cellspacing='0' CELLPADDING='0'><tr><td align = 'left'><img src = '/global/imagens/logotipo.gif'></td></tr><tr><td>")
Response.write("Ocorreu um erro inesperado, entre em contato com a equipe de suporte")
Response.write ("</td></tr></table>")
Response.write ("</center></BODY></HTML>")
response.end %>


Observe a forma como obtemos as informações de log do objeto ASPError, gravamos em um arquivo txt inserido em um local fixo e depois montamos uma resposta padrão para o usuário.

Precisamos apenas substituir a página 500-100.asp padrão por este nosso novo código, ou ainda apenas reconfigurar o Custom Errors do IIS para este nosso novo código, desta forma garantimos que o usuário final não verá as mensagens de erro do nosso site.

Assim como personalizamos o código de erro 500-100 podemos personalizar diversos outros, tal como o 404 (página não encontrada) e outros mais.

Dennes Torres
MCSD,MCSE,MCDBA






Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Sueli Levei E-Mail : cadu95@hotmail.com
Tenho um sistema com acesso ao banco de dados Access e ao acessar a página emite um erro de código ASP, HTTP 500.100. O que pode estar acontecendo, uma vez que já fiz todas as configurações necessárias?
Nome : Dennes Torres E-Mail : dennes@bufaloinfo.com.br
O erro 500.100 é um erro genérico, a verdadeira mensagem encontra-se oculta. Neste artigo mesmo você encontra os passos para ver esta mensagem.

Nome : Joao Neto E-Mail : jneto@lscalado.com
Não é bem um comentário e mais para tirar uma dúvida...
gostaria de saber como fazer para que quando minha página asp quando carregase com um erro ela retornase
uma mensagem personalizada, tipo Erro ao Conectar com banco de dados.
Nome : Cristian Fernandes E-Mail : cristian@pmweb.com,br
Muito interessante o seu artigo, não conhecia essa forma de tratamento de erros, Parabéns
Nome : asass@asas.com.br E-Mail : asas
Tenho um sistema com acesso ao banco de dados Access e ao acessar a página emite um erro de código ASP, HTTP 500.100. O que pode estar acontecendo, uma vez que já fiz todas as configurações necessárias?
Nome : ' E-Mail : '
'
Nome : nicole E-Mail : nicole_janete@hotmail.com
ta bom mas puco conteudo para o tema que tem
Nome : E-Mail :
fun search test!
Nome : E-Mail :
fun search test!
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : sqUqGeAKuVs0 E-Mail : l129v33c9@hotmail.com
This forum needed shnaikg up and you've just done that. Great post!

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br