Microsoft Internet Information Services (IIS) versão 5.0 introduz a capacidade de criar páginas de erro personalizadas do Active Server Pages (ASP) por meio da adição de um novo método para o objeto interno do servidor ASP chamado Server.GetLastError() que retorna um novo objeto ASPError .
Quando ocorre um erro enquanto você compila ou executa uma página ASP, o IIS gera um erro 500; 100 e executa um método Server.Transfer() passar controle para a página de erro personalizadas definidas atualmente. (Por padrão nesta página é /iishelp/common/500-100.asp.) Para obter mais informações sobre o método Server.Transfer(), consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
219294
(http://support.microsoft.com/kb/219294/EN-US/
)
Como usar o método Server.Transfer
Quando controle é passado para a página de erro personalizada, o método Server.GetLastError() pode ser usado para obter informações detalhadas sobre o erro que ocorreu. O método Server.GetLastError() retorna um objeto ASPError que tem as propriedades listadas na tabela a seguir. (Esta tabela também pode ser encontrada na documentação on-line do IIS 5.0.)
Recolher esta tabelaExpandir esta tabela
| Propriedade | Descrição |
|---|
| ASPCode | Retorna um código de erro gerado pelo IIS. |
| Número | Retorna o código de erro COM padrão. |
| Fonte | Indica se a origem do erro interna de ASP, a linguagem de script ou um objeto. |
| Arquivo | Indica o nome do arquivo .asp que estava sendo processado quando ocorreu o erro. |
| Linha | Indica a linha no arquivo .asp que gerou o erro. |
| Descrição | Retorna uma descrição curta do erro. |
| ASPDescription | Retorna uma descrição mais detalhada do erro se ele é um erro relacionados ao ASP. |
As etapas listadas abaixo o orientará na configuração de uma página de erro ASP personalizada.
- Salve o seguinte código ASP na sua pasta de scripts como "My500.asp" (sem as aspas):
<%@Language="VBSCRIPT"%>
<%
Option Explicit
On Error Resume Next
Response.Clear
Dim objError
Set objError = Server.GetLastError()
%>
<html>
<head>
<title>ASP 500 Error</title>
<style>
BODY { FONT-FAMILY: Arial; FONT-SIZE: 10pt;
BACKGROUND: #ffffff; COLOR: #000000;
MARGIN: 15px; }
H2 { FONT-SIZE: 16pt; COLOR: #ff0000; }
TABLE { BACKGROUND: #000000; PADDING: 5px; }
TH { BACKGROUND: #0000ff; COLOR: #ffffff; }
TR { BACKGROUND: #cccccc; COLOR: #000000; }
</style>
</head>
<body>
<h2 align="center">ASP 500 Error</h2>
<p align="center">An error occurred processing the page you requested.<br>
Please see the details below for more information.</p>
<div align="center"><center>
<table>
<% If Len(CStr(objError.ASPCode)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">IIS Error Number</th>
<td align="left" valign="top"><%=objError.ASPCode%></td>
</tr>
<% End If %>
<% If Len(CStr(objError.Number)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">COM Error Number</th>
<td align="left" valign="top"><%=objError.Number%>
<%=" (0x" & Hex(objError.Number) & ")"%></td>
</tr>
<% End If %>
<% If Len(CStr(objError.Source)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">Error Source</th>
<td align="left" valign="top"><%=objError.Source%></td>
</tr>
<% End If %>
<% If Len(CStr(objError.File)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">File Name</th>
<td align="left" valign="top"><%=objError.File%></td>
</tr>
<% End If %>
<% If Len(CStr(objError.Line)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">Line Number</th>
<td align="left" valign="top"><%=objError.Line%></td>
</tr>
<% End If %>
<% If Len(CStr(objError.Description)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">Brief Description</th>
<td align="left" valign="top"><%=objError.Description%></td>
</tr>
<% End If %>
<% If Len(CStr(objError.ASPDescription)) > 0 Then %>
<tr>
<th nowrap align="left" valign="top">Full Description</th>
<td align="left" valign="top"><%=objError.ASPDescription%></td>
</tr>
<% End If %>
</table>
</center></div>
</body>
</html>
- Defina a página de erro ASP personalizada:
- Abra o o Gerenciador de serviços Internet no MMC.
- Expanda o site padrão.
- Clique com o botão direito do mouse na pasta scripts e selecione Propriedades .
- Clique na guia Erros personalizados .
- Role para baixo e realçar o erro HTTP 500; 100 e clique em Editar propriedades .
- Verifique se o Tipo de mensagem é definido como URL .
- Alterar a URL para "/ scripts/my500.asp" (sem as aspas).
- Clique em OK até retornar ao MMC.
- Teste a nova página de erro:
- Salvar todas as seguintes páginas em sua pasta de scripts:
- Salve a página a seguir como "Badpage1.asp" (sem as aspas):
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 1</title>
</head>
<body>
<% Response.Write 1/0 %>
</body>
</html>
- Salvar a página a seguir como Badpage2.asp"(sem as aspas):
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 2</title>
</head>
<body>
<% Response.BadMethod "Hello" %>
</body>
</html>
- Salve a página seguinte como "Badpage3.asp" (sem as aspas):
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 3</title>
</head>
<body>
<%
Dim objBad
Set objBad = Server.CreateObject("BAD.OBJECT.CLASS")
%>
</body>
</html>
- Quando você procura qualquer uma das páginas acima, agora você deve ver a página de erro personalizadas retornada ao navegador.
Observação: Ao usar páginas de erro do Internet Explorer 5.0 e posterior para exibir personalizadas ASP, resultados inesperados podem ser retornados. IE5 introduziu um recurso para substituir o modelo HTML para HTTP 500, e vários outros normalmente retornados códigos de status, com mensagens padronizadas, não-específica. Para ignorar esse recurso e mostrar o texto exato do código de status retornado ao navegador, abra o Internet Explorer e navegue até:
Tools | Internet Options | Advanced
em seguida, desmarque a caixa de seleção
Show friendly HTTP error messages
Informações adicionais sobre esse recurso estão disponíveis no
218155
(http://support.microsoft.com/kb/218155/EN-US/
)
Descrição de mensagens de erro Hypertext Transport Protocol