ISS (Serviços de informação Internet Information Services) versão 5.0 introduz a capacidade de criar páginas de erro de ASP (Active Server Pages) personalizadas através da adição de um novo método para o objecto de servidor de ASP incorporado chamado Server.GetLastError() que devolve um novo objecto ASPError .
Quando ocorre um erro durante a compilar ou executa uma página ASP, o IIS gera um erro 500; 100 e executa um método Server.Transfer() para passar o controlo para a página de erro personalizadas actualmente definidas. (Por predefiniçã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 utilizar o método Server.Transfer
Quando controlo é passado para a página de erro personalizada, o método de Server.GetLastError() pode ser utilizado para obter informações detalhadas sobre o erro ocorreu. O método Server.GetLastError() devolve um objecto ASPError que tenha as propriedades listadas na seguinte tabela. (Nesta tabela pode também encontrar na documentação online do IIS 5.0).
Reduzir esta tabelaExpandir esta tabela
| Propriedade | Descrição |
|---|
| ASPCode | Devolve um código de erro gerado pelo IIS. |
| Número | Devolve o código de erro COM padrão. |
| Origem | Indica se a origem do erro foi interna para ASP, a linguagem de script ou um objecto. |
| Ficheiro | Indica o nome do ficheiro .asp que estava a ser processado quando ocorreu o erro. |
| Linha | Indica a linha do ficheiro .asp que gerou o erro. |
| Descrição | Devolve uma breve descrição do erro. |
| ASPDescription | Devolve uma descrição mais detalhada do erro se for um erro relacionado com ASP. |
Os passos listados abaixo serão escolhida como configurar uma página de erro ASP personalizada.
- Guarde o seguinte código ASP na pasta 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 Gestor de serviços Internet no MMC.
- Expanda o Web Site predefinido.
- Clique com o botão direito do rato na pasta scripts e seleccione Propriedades .
- Clique no separador Erros personalizados .
- Desloque-se para baixo e realce o erro HTTP 500; 100 e clique em Editar propriedades .
- Certifique-se de que Tipo de mensagem está definido para URL .
- Alterar o URL "/ scripts/my500.asp" (sem as aspas).
- Clique em OK até regressar à MMC.
- Teste a nova página de erro:
- Guarde todas as páginas seguintes na pasta scripts:
- Guarde a página seguinte como "Badpage1.asp" (sem as aspas):
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 1</title>
</head>
<body>
<% Response.Write 1/0 %>
</body>
</html>
- Guardar a página seguinte como Badpage2.asp"(sem as aspas):
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 2</title>
</head>
<body>
<% Response.BadMethod "Hello" %>
</body>
</html>
- Guarde 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 procurar as páginas acima, deverá ver agora a página de erro personalizadas retornada ao navegador.
NOTA: Quando utilizar páginas de erro ASP do Internet Explorer 5.0 e posterior para visualizar personalizada, podem ser devolvidos resultados inesperados. IE5 introduzida uma funcionalidade para substituir o modelo HTML para HTTP 500 e vários outros normalmente devolvido códigos de estado, com padrão, não específicas de mensagens. Para ignorar esta funcionalidade e mostrar o texto exacto do código de estado devolvido ao browser, abra o Internet Explorer e navegue para:
Tools | Internet Options | Advanced
em seguida, desmarque a caixa de verificação com o nome
Show friendly HTTP error messages
Estão disponíveis informações adicionais sobre esta funcionalidade no
218155
(http://support.microsoft.com/kb/218155/EN-US/
)
Descrição das mensagens de erro Hypertext Transport Protocol