HTTP 500.100 hatalarına hükmedin
Sniper tarafından 10 Mart 2009 tarihinde yazıldı.Veritabanımız hazırsa artık kodlamaya geçebiliriz. Burada uygulayacağımız örnek orjinal dokümandaki sevimsizliği anımsatsa da hayal gücünüzü kullanarak tasarımınızla bunun üstesinden gelebilirsiniz :)
hata.asp
< % ' Normal Değişkenler Dim ASPKodu, ASPAciklama, Kategori, Sutun, Aciklama, Dosya, Satir, Numara, Kaynak ' Nesneler Dim Hata, Kontol, Bag, Ekle, Guncelle ' Mesajların içindeki tek ve çift tırnakları temizleyen fonksiyon Function Temizle(Metin) Metin = Replace(Metin,"""",""") Metin = Replace(Metin,"'","'") Metin = Replace(Metin,"","\") Temizle = Metin End Function ' Hata veritabanımıza bağlanıyoruz Set Bag = Server.CreateObject("ADODB.Connection") Bag.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:Hata.mdb" ' Hatayı öğreniyoruz Set Hata = Server.GetLastError() ' Hata içeriğini değişkenlerimize aktarıyoruz With Hata ASPKodu = Temizle(.ASPCode) ASPAciklama = Temizle(.ASPDescription) Kategori = Temizle(.Category) Sutun = Temizle(.Column) Aciklama = Temizle(.Description) ' Dosya kısmını biraz genişleterek hangi siteye ait olduğunu da yazdıralım ' Bu sayede kodu kök dizin altına atarsak sitelere göre ayırmak daha kolay olur. Dosya = Temizle("http://" & Request.ServerVariables("SERVER_NAME") & .File) Satir = Temizle(.Line) Numara = Temizle(.Number) Kaynak = Temizle(.Source) End With ' Değişkenler veritabanına kaydedilirken hata almayalım diye varsayılanları ayarlayalım. ' Sonra hata sayfasında hata verdirip madara olmayalım :) If ASPKodu = "" Then ASPKodu = 0 If Sutun = "" Then Sutun = 0 If Satir = "" Then Satir = 0 If Numara = "" Then Numara = 0 ' Daha önceden bu hata mesajı veritabanımıza kaydedilmiş mi? Set Kontrol = Bag.Execute("SELECT fldFile, fldDescription, fldNumber FROM tblHata WHERE fldFile='" & Dosya & "' AND fldDescription='" & Aciklama & "' AND fldNumber=" & Numara) 'Kaydedilmemişse edelim, edilmişse hatayla kaç kere karşılaşılmış not edelim If Kontrol.EOF Then Set Ekle = Bag.Execute("INSERT INTO tblHata(fldASPCode, fldASPDescription, fldCategory, fldColumn, fldDescription, fldFile, fldLine, fldNumber, fldSource, fldHit, fldDuzenleme) VALUES(" & ASPKodu & ",'" & ASPAciklama & "','" & Kategori & "'," & Sutun & ",'" & Aciklama & "','" & Dosya & "'," & Satir & "," & Numara & ",'" & Kaynak & "',1,False)") Else Set Guncelle = Bag.Execute("UPDATE tblHata Set fldHit=fldHit+1 WHERE fldFile='" & Dosya & "' AND fldDescription='" & Aciklama & "' AND fldNumber=" & Numara) End If %> <h3 style="color:#FF0000">Sayfa kodları işlenirken hata oluştu!</h3> < % If ASPKodu <> 0 Then Response.Write "<strong>Hatanın ASP Kodu: 0x" & ASPKodu & "" %> < % If ASPAciklama > "" Then Response.Write "<strong>Hatanın ASP Açıklaması: " & ASPAciklama & "" %> < % If Kategori > "" Then Response.Write "<strong>Hata Kategorisi: " & Kategori & "" %> < % If Sutun <> "-1" Then Response.Write "<strong>Hatanın oluştuğu Sütun: " & Sutun & "" %> < % If Aciklama > "" Then Response.Write "<strong>Hatanın Açıklaması: " & Aciklama & "" %> < % If Dosya > "" Then Response.Write "<strong>Hata oluşan Dosya: " & Dosya & "" %> < % If Numara > "" Then Response.Write "<strong>Hata Numarası: " & Numara & "" %> < % If Satir > "" Then Response.Write "<strong>Hataya Sebep Olan Satır: " & Satir & "" %> < % If Kaynak > "" Then Response.Write "<strong>Hatanın Kaynağı: " & Kaynak & "" %> <strong style="color:#FF0000">Hataya sebebiyet veren kodlar kaydedildi ve en kısa zamanda düzeltilecektir.Oluşan bu hatadan dolayı özür dileriz...</strong> |
Kodumuzun ne yaptığına kısaca değinecek olursak; Hata.mdb’ye bağlanıyor, hata kodlarını öğreniyor, eğer hata kodu daha önceden veritabanımıza kaydedilmemişse yeni hata kaydı olarak ekliyor, yok eklenmişse hit değerini arttırıp o hatayla kaç kere karşılaşıldığının kaydını tutuyor, son olarakta kullanıcıya bilgilendirici bir mesaj ulaştırıyor. (Sanki kullanıcı bu yazılanlardan birşey anlayacak.
- Giriş
- GetLastError Nesnesini Tanıyalım
- Veritabanlarını oluşturalım
- Hata denetim sayfası örneği
- Sonuç
- Bir deneme yapalım
Etiketler: 500.100, hata sayfası, http 500
