2012-02-13 22 views
6

È possibile acquisire tutti e 500 gli errori in ASP classico a livello globale? Forse qualcosa in IIS. Sto usando II6 al momento. Mi piace catturare il messaggio di errore e quindi memorizzarlo nel database. So che è possibile nelle pagine ASPX, ma non so esattamente come si fa in ASP classico.ASP classico: errori di cattura

Grazie

+0

IIS7 ha Traccia richiesta non riuscita che segnala errori ASP classici non gestiti, non è sicuro se esiste in 6.0. http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis/ –

risposta

13

Sì, creare una pagina ASP che registrare i dettagli dell'errore al database e impostare questo per essere la pagina 500 del gestore in IIS come di seguito.

Utilizzare l'oggetto Server.GetLastError per ottenere i dettagli dell'errore nello script del gestore.

Potrebbe essere una buona idea accedere a un file di testo anziché a un DB nel gestore 500 per la resilienza.

Set Custom 500 Handler in IIS

+1

Ottima risposta ... – Dan

+0

Questo è esattamente quello che stavo cercando. Grazie Jon. Lo proverò adesso. – MindGame

+0

Quando I response.write Server.GetLastError() non ottengo nulla. Qualche idea? – MindGame

4

gestione in ASP classico errore è un dolore completo. È possibile rilevare l'errore in cui si pensa che si verificherà utilizzando on error resume next, quindi verificare il codice di errore nella seguente riga di codice.

In alternativa è possibile eseguire la scansione dei log del server per 500 errori. o impostare una pagina "500 errore" nelle impostazioni di IIS.

On Error Resume Next 
... do something... 
If Err.Number <> 0 Then 
... handle error 
end if 
5

complemento risposta di Jon, utilizzare questo script per errori di scrittura in un file di log:

<% 
'Set this page up in IIS to receive HTTP 500 errors 
''Type' needs to be 'URL' and the URL is e.g.: '/500Error.asp' if this file is named '500Error.asp' and is in the site root directory. 
'This script assumes there is a "/Log" folder, and that IIS has write access to it. 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 

Dim objFSO, err 
Set objFSO=CreateObject("Scripting.FileSystemObject") 

Set err = Server.GetLastError() 

outFile=Server.MapPath("/Log/ErrorLog.txt") 
Set objFile = objFSO.OpenTextFile(outFile, ForAppending, True, TristateTrue) 

objFile.WriteLine Now & " - ERROR - ASPCode:" & err.ASPCode & " ASPDescription: " & err.ASPDescription & " Category: " & err.Category & " Description: " & err.Description & " File: " & err.File & " Line: " & err.Line & " Source: " & err.Source & vbCrLf 
objFile.Close 

Set objFile = Nothing 
Set err = Nothing 

%> 
0

Per aggiungere alla risposta di @ Jon Eastwood - se si utilizza IIS 7.5, allora invece di "errori personalizzati "cercherete" NET pagine di errore" per l'immagine qui sotto:

enter image description here

Questo vale per Windows Server 2008 e altri più recenti di Windows SKU.

Problemi correlati