#488 - Un sistema di tracing degli errori con Classic ASP: l'errore 500-100
Nello script #485 abbiamo cominciato la creazione del nostro sistema di tracing, tracciando tutti gli errori 400.
Continuiamo a costruire il sistema utilizzando una novità di ASP 3 (e quindi di Windows 2000 o superiore), ovvero l'errore 500-100.
Questo genere di errore si verifica ogniqualvolta uno script contiene un errore. Al pari del 400, è possibile specificare una pagina personalizzata, che nel nostro esempio utilizzeremo per completare il logging su database anche degli errori negli script.
<%
Function FixQuotes(stringa)
FixQuotes = Replace(stringa, "'", "''")
End Function
' funzione per loggare su db
Sub Salva(tipo, pagina, referer)
extra = "Form: " & Request.Form & VbCrLf
extra = extra & "Querystring: " & Request.Querystring & VbCrLf
set objError = Server.getLastError()
extra = extra & "Codice ASP: " & objError.AspCode & VbCrLf
extra = extra & "Categoria: " & objError.Category & VbCrLf
pagina = objError.File
extra = extra & "Descrizione: " & objError.Description &_
" " & ObjError.ASPDescription & VbCrLf
extra = extra & "Codice: " & Server.HTMLEncode(objError.Source) & VbCrLf
extra = extra & "Linea: " & ObjError.Line
set objError = nothing
' query di inserimento nel database
strSQL = "INSERT INTO LogsErrori (tipo, pagina, referer, IP, extra) "
strSQL = strSQL & "VALUES ('" & tipo & "', '" & FixQuotes(pagina) & "', '" & FixQuotes(referer) & "', "
strSQL = strSQL & "'" & FixQuotes(Request.ServerVariables("REMOTE_ADDR")) & "', "
strSQL = strSQL & "'" & FixQuotes(extra) & "') "
' apertura db
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "stringadiconn"
' esecuzione query
conn.Execute(strSQL)
' chiusura connessione
conn.Close
set conn = Nothing
end Sub
' raccolta informazioni
strRef = Request.ServerVariables("HTTP_REFERER")
' logga su db
call Salva("500-100", "", strRef)
' messaggio personalizzato di errore
Response.Write("Si è verificato un errore nei nostri script. Abbiamo registrato l'errore.")
%>
A questo punto ciò che manca è il pannello di controllo. E' facilmente implementabile attraverso questo script:
http://www.aspitalia.com/liste/usag/script.aspx?ID=372
Infine, per evitare che il nostro database diventi pieno, possiamo aggiungere alla funzionalità di logging una query che cancelli i record più vecchi di una settimana.
Approfondimenti
- Uno sguardo a LINQ to SQL
- Cosa c'è in ASP.NET 3.5 Service Pack1
- Sql Server 2008 e Visual Studio 2008 SP1
- Installare ASP.NET ed i tool in un colpo solo
- Real Code Launch 2008: grazie!
- SQL Server 2008 February CTP
- Cosa fare se la vostra applicazione ASP o ASP.NET è vittima di SQL injection
- Microsoft Security Bulletin di settembre 2008
- Una noisa limitazione di LINQ To SQL
- Intellisense in Sql Server 2008
- Realizzare applicazioni ASP.NET sicure - Seconda parte
- Speciale per il lancio di Visual Studio 2008, SQL Server 2008 e Windows Server 2008 dal 25/02 al 07/03
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!