Alfabetik Sıralama :ABCDEFGHIJKLMNOPQRSTUVWXYZ -


ASP´de oluşan hataları Server nesnesinin GetLastError alt nesnesiyle öğrenebiliyoruz. GetLastError nesnesinin özelliklerine kısaca değinecek olursak:

  1. ASPCode: IIS tarafından oluşturulan hata kodunu döndürür.
  2. ASPDescription: Oluşan hata ASP ile alakalıysa detaylı bir açıklama döndürür.
  3. Category: Hatanın kaynağını döndürür.
  4. Column: ASP sayfası içinde hataya sebep olan kodlamanın sütun pozisyonunu döndürür.
  5. Description: Hata hakkında kısa bir açıklama döndürür.
  6. File: Hata oluşan ASP dosyasının yolunu döndürür.
  7. Line: Hatanın kaçıncı satırda oluştuğunu döndürür.
  8. Number: Standart COM hata numarası döndürür.
  9. Source: Hataya sebep olan kodlar okunabiliyorsa bu kodları döndürür.

Bu yazının amacı, bu nesneyi kullanarak oluşan hataları bir veritabanında depolamak ve ziyaretçinin uyarısına gerek kalmadan, anında hatadan haberdar olup müdahale edebilmeyi göstermektir. Madem veritabanına kaydedeceğiz, bir tane oluşturalım. Aşağıda hem MS Access için hem de MySQL için birer örnek bulunuyor:

MS Access Örneği
<%
Dim Katalog, Bag
Set Katalog = Server.CreateObject("ADOX.Catalog")
Set Bag = Server.CreateObject("ADODB.Connection")

´ Veritabanını oluşturuyoruz
Katalog.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Hata.mdb"
´ ve bu veritabanına bağlanıyoruz
Bag.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:Hata.mdb"

´ tablomuzu oluşturuyoruz
SQL = "CREATE TABLE tblHata (" &_
"fldID COUNTER PRIMARY KEY, " &_
"fldASPCode INTEGER, " &_
"fldASPDescription CHAR(255), " &_
"fldCategory CHAR(50), " &_
"fldColumn INTEGER, " &_
"fldDescription CHAR(255), " &_
"fldFile CHAR(100), " &_
"fldLine INTEGER, " &_
"fldNumber INTEGER, " &_
"fldSource CHAR(255), " &_
"fldHit INTEGER, " &_
"fldDuzenleme BIT" &_
")"

´ ve bunu veritabanına ekliyoruz
Set Olustur = Bag.Execute(SQL)
´bitti
Response.Write "Veritabanı C: dizininde oluşturuldu!"
%>

MySQL Örneği
CREATE TABLE `tblhata` (
`fldID` int(11) NOT NULL auto_increment,
`fldASPCode` int(11) default NULL,
`fldASPDescription` char(255) default NULL,
`fldCategory` char(50) default NULL,
`fldColumn` int(11) default NULL,
`fldDescription` char(255) default NULL,
`fldFile` char(100) default NULL,
`fldLine` int(11) default NULL,
`fldNumber` int(11) default NULL,
`fldSource` char(255) default NULL,
`fldHit` int(1) default NULL,
`fldDuzenleme` bit(1) default NULL,
PRIMARY KEY (`fldID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

MS Access örneğindeki kodu komple kopyalayıp çalıştırısanız C: dizininde Hata.mdb isimli dosya oluşturulur ve kullanmanız için sizi bekler. MySQL için ise, kodu kopyalayıp MySQL Query Browser veya muadili programları kullanarak veritabanınızı oluşturabilirsiniz. Ben her ne kadar MySQL kullansam da örneğimi MS Access üzerinden vereceğim. İsteyen gerekli değişiklikleri yaparak kodu istediği veritabanına çevirebilir.

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,"""","&#34;")
    Metin = Replace(Metin,"´","&#39;")
    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 düzün 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
%>
<html>
<head>
<title>Hata oluştu!</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-9">
</head>
<body>
<h3 style="color:#FF0000">
Sayfa kodları işlenirken hata oluştu!</h3></center><p>
<% If ASPKodu <> 0 Then Response.Write "<b>Hatanın ASP Kodu</b>: 0x" & ASPKodu & "<br>" %>
<% If ASPAciklama > "" Then Response.Write "<b>Hatanın ASP Açıklaması</b>: " & ASPAciklama & "<br>" %>
<% If Kategori > "" Then Response.Write "<b>Hata Kategorisi</b>: " & Kategori & "<br>" %>
<% If Sutun <> "-1" Then Response.Write "<b>Hatanın oluştuğu Sütun</b>: " & Sutun & "<br>" %>
<% If Aciklama > "" Then Response.Write "<b>Hatanın Açıklaması</b>: " & Aciklama & "<br>" %>
<% If Dosya > "" Then Response.Write "<b>Hata oluşan Dosya</b>: " & Dosya & "<br>" %>
<% If Numara > "" Then Response.Write "<b>Hata Numarası</b>: " & Numara & "<br>" %>
<% If Satir > "" Then Response.Write "<b>Hataya Sebep Olan Satır</b>: " & Satir & "<br>" %>
<% If Kaynak > "" Then Response.Write "<b>Hatanın Kaynağı</b>: " & Kaynak & "<br>" %><br>
<b style="color:#FF0000">Hataya sebebiyet veren kodlar kaydedildi ve en kısa zamanda düzeltilecektir.<br>Oluşan bu hatadan dolayı özür dileriz...</b><p>
</body>
</html>

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 :) )

Özelleştirdiğimiz hata sayfamız tamam. Şimdi sıra bu hata sayfasını IIS ile tanıştırmakta. Ben örneklerimi localhost üzerinden vereceğim. Başlat > Ayarlar > Denetim Masası > Yönetimsel Araçlar menüsünden Internet Information Server (IIS)´i çalıştırın. XX (yerel bilgisayar) > Web Siteleri > Varsayılan Web Sitesi ağacını açın. (Buradaki XX kendi bilgisayarınızın adı.) Dilerseniz bundan sonraki işlemi -varsa- sanal dizinler için uygulayabilirsiniz. Bu yazıda tüm işlemler Varsayılan Web Sitesi altında gerçekleştirilecektir.

  1. Varsayılan Web Sitesi´ne sağ tıklayıp açılan menüden Özellikleri´i seçin.
  2. Ekrana gelen penceredeki Özel Hatalar tabına tıklayın ve listeden HTTP Hatası başlığı altında bulunan 500;100´ü seçip aktif olan Özellikleri Düzenle butonuna tıklayın.
  3. İleti Türü olarak URL´yi seçin ve aşağıda beliren URL kutucuğuna /hata.asp yazın. (Tabi bu durumda hata.asp´nin, kök dizinde bulunması gerekir. Varsayılan kök dizin C:inetpubwwwroot´tur.)
  4. Bundan sonra tüm pencereler kapanana kadar gördüğünüz bütün Tamam butonlarına tıklayın.

Hata sayfamızı IIS´ye de tanıttığımıza göre de bir deneme yapalım değil mi? Bu yeni kullanıcılar için kolay olsa da ben tecrübeli kullanıcılar için basit bir hatalı sayfa oluşturayım dedim :)

hatalisayfa.asp
<% Err.raise(21) ´ 21 uğurlu rakamımdır da... %>

 



Konu: HTTP 500.100 hatalarına hükmedin
 
Okunma Sayısı : 97
Eklenme Tarihi : 31 Ocak 2007, Çarşamba
SONRAKI BILGI : VICTORIA`S SECRET KIZLARI SOYUNDU!   
Forum Linki:
Aranan Kelime:
 

En Yeni Bilgiler


 ISS PWS DB`Ye Yazma Okuma izni verme ISS PWS DB`Ye Yazma Okuma izni verme
 FSO ile Upload FSO ile Upload
 Rastgele şifre üretmek Rastgele şifre üretmek
 ASP - Boşluksuz(Space) Uzun Kelimeleri Bölme ASP - Boşluksuz(Space) Uzun Kelimeleri Bölme
 ASP ile Base64 Şifreleme ASP ile Base64 Şifreleme
 ASP ile Base64 Şifre Çözme ASP ile Base64 Şifre Çözme
 Tüm harfleri büyütme, küçültme ve kelimelerin ilk harflerini büyütme Tüm harfleri büyütme, küçültme ve kelimelerin ilk harflerini büyütme
 Mailleri bölerek göndermek Mailleri bölerek göndermek
 Türkçe karakterleri ingilizce karşılıklarına çevirmek Türkçe karakterleri ingilizce karşılıklarına çevirmek
 Hata sayfası(404) ile link yönetimi Hata sayfası(404) ile link yönetimi
 Mail okundu bilgisi Mail okundu bilgisi
 Online üyeler Online üyeler
 Önceki sonraki linki Önceki sonraki linki
 ASP ile Web Programcılığı ASP ile Web Programcılığı
 ASP de diziler , dizi değişkenler ASP de diziler , dizi değişkenler
 ASP - Operatörler ASP - Operatörler
 ASP ile MySQL verilerini sayfalama ASP ile MySQL verilerini sayfalama
 ASP ile MS Access verilerini sayfalama ASP ile MS Access verilerini sayfalama
 ADO - Giriş (Bölüm 1 ADO - Giriş (Bölüm 1
 ADO - Connection (Bölüm 2) ADO - Connection (Bölüm 2)
 ASP ile Online Radyo Hizmetine Giriş ASP ile Online Radyo Hizmetine Giriş
 ASP dosyalarını DLL´ye çevirme ASP dosyalarını DLL´ye çevirme
 HTTP 500.100 hatalarına hükmedin HTTP 500.100 hatalarına hükmedin
 ASP ve VBScript nedir? ASP ve VBScript nedir?
 VBScriptte Veri Tipleri VBScriptte Veri Tipleri
 VBScriptte değişkenler ve sabitler VBScriptte değişkenler ve sabitler
 VBScriptte Dictionary Nesnesi VBScriptte Dictionary Nesnesi
 Regular Expressions (Düzenli İfadeler) Regular Expressions (Düzenli İfadeler)
 Şartlı ifadeler Şartlı ifadeler
 Persist Bileşeni ile Email formu Persist Bileşeni ile Email formu
 Vertabanından 2-3-4`erli sıralama Vertabanından 2-3-4`erli sıralama
 Arama Motoru yapmak Arama Motoru yapmak
 Jmail bileşeni ile mail formu Jmail bileşeni ile mail formu
 ASP`ye giriş ASP`ye giriş
 Değiskenler Değiskenler
 ASP başlangıç ASP başlangıç
 Arama Motoru Arama Motoru
 Form bilgileri Form bilgileri
 Veritabanı, kayıt ve silme işlemleri Veritabanı, kayıt ve silme işlemleri
 Veritabanına bağlanmak ve veri almak Veritabanına bağlanmak ve veri almak
 Veritabanı oluşturma Veritabanı oluşturma
 Querystring Querystring
 Mailllist yapımı Mailllist yapımı
 Kayıtları Sayfalara bölmek Kayıtları Sayfalara bölmek
 Sub kullanımı Sub kullanımı
 Ziyaretçi`nin IP Numarasını almak Ziyaretçi`nin IP Numarasını almak
 Sayfaya şifre koymak Sayfaya şifre koymak
 Online kişi sayısı Online kişi sayısı
 Kategorili Sistem Kategorili Sistem
 Tarihler arası veri seçtirmek. Tarihler arası veri seçtirmek.
 GET Yöntemi ile İşlemler GET Yöntemi ile İşlemler
 POST Yöntemi ıle ışlemler POST Yöntemi ıle ışlemler
 ASP`de Güvenlik Önlemleri ASP`de Güvenlik Önlemleri
 Cdonts ile mail formu Cdonts ile mail formu
 FSO ile log tutmak FSO ile log tutmak
 ASPUpload bileşeni ASPUpload bileşeni
 Sunucu Değişkenleri Sunucu Değişkenleri
 Alışveriş ve Sepet Yapımı Alışveriş ve Sepet Yapımı
 Flood koruması Flood koruması
 Sayfaları şifreleme(ENCODE) Sayfaları şifreleme(ENCODE)
 SPLIT Kullanımı SPLIT Kullanımı
 YTL Güncellemesi YTL Güncellemesi
 Tarih ve Saat Fonksiyonları Tarih ve Saat Fonksiyonları
 Döngüler Döngüler
 XMLHTTP XMLHTTP
 NTVMSNBC.COM Haberleri NTVMSNBC.COM Haberleri
 IIS Ayarları 2 IIS Ayarları 2
 ASP Tear ASP Tear
 Rastgele Veri Rastgele Veri
 ASP Jpeg ASP Jpeg
 SQL Komutları SQL Komutları
 Array Nesnesi Array Nesnesi
 If...else ıfadesi If...else ıfadesi
 Tavsiyet Et Tavsiyet Et
 Birden Fazla Alanadı Desteği Birden Fazla Alanadı Desteği
 Online Üyeler Online Üyeler
 Güvenlik Kodu Güvenlik Kodu
 MS SQL Server - 2 MS SQL Server - 2
 MS SQL Server - 1 MS SQL Server - 1
 MS SQL Server - 3 MS SQL Server - 3
 XMLHTTP ile döviz Kurları XMLHTTP ile döviz Kurları
 TL`yi YTL olarak Yazdırmak TL`yi YTL olarak Yazdırmak
 YTL`yi TL olarak Yazdırmak, YTL`yi TL olarak Yazdırmak,
 Dönüşümlü Banner Sistemi Dönüşümlü Banner Sistemi
 IP Filtresi IP Filtresi
 MySmartUpload Bileşeni MySmartUpload Bileşeni
 SQL İle İşlemler SQL İle İşlemler
 Cookie(Çerez) Kullanımı Cookie(Çerez) Kullanımı
 ASP ile Mail gönderme. ASP ile Mail gönderme.
 SQL - Yapısal Sorgu Dili 1 SQL - Yapısal Sorgu Dili 1
 MS SQL Server - 4 MS SQL Server - 4
 Klasör Şeklinde Linkler(404 Yönetimi) Klasör Şeklinde Linkler(404 Yönetimi)
 Http`leri Link Yapmak Http`leri Link Yapmak
 Cookie`s (Çerezler) Cookie`s (Çerezler)
 Renkli Tablolar Renkli Tablolar
 Windows XP`de SMTP Kurulumu Windows XP`de SMTP Kurulumu
 Err Nesnesi Kullanımı Err Nesnesi Kullanımı
 MS SQL Server - 5 MS SQL Server - 5
 Daha Performanslı Kodlar Daha Performanslı Kodlar
 Jmail ile Şifreleme Jmail ile Şifreleme
 Karakter Temizleme Karakter Temizleme
 Sınırsız Kategori Sistemi Sınırsız Kategori Sistemi
 Makale Sayfalama Makale Sayfalama
 IIS Kurulumu ve Yazma İzni IIS Kurulumu ve Yazma İzni
 Geçen Zaman Gösterimi Geçen Zaman Gösterimi
 Include Yöntemleri Include Yöntemleri
 E-Mail adresi kontrolü E-Mail adresi kontrolü
 Açılır Kutu(DropDown) yapımı Açılır Kutu(DropDown) yapımı
 FSO ile Listeleme FSO ile Listeleme
 Tarih Format`ı Tarih Format`ı
 XmlHTTP Türkçe Karakter Problemi XmlHTTP Türkçe Karakter Problemi
 Bileşen Kurulumu Bileşen Kurulumu
 Stored Procedure - MSSQL Stored Procedure - MSSQL
 Ntvmsnbc Haberleri (XmlHTTP) Ntvmsnbc Haberleri (XmlHTTP)
 Tarih Biçimleri Tarih Biçimleri
 Stored Procedure Değişkenler Stored Procedure Değişkenler
 Fonksiyon(Function) Kullanımı Fonksiyon(Function) Kullanımı
 Tablolu Yanyana Sıralama Tablolu Yanyana Sıralama
 Puan sistemi Puan sistemi
 Access`ten MSSQL`e Access`ten MSSQL`e
 SQL Distinct Kullanımı SQL Distinct Kullanımı
 Değer Fonksiyonları Değer Fonksiyonları
 Türkçe karakter kontrol Türkçe karakter kontrol
 ASP Class(Sınıf) Kullanımı ASP Class(Sınıf) Kullanımı
 Üyelik Sistemi Yapımı Üyelik Sistemi Yapımı
 IIS Şifresi Koymak IIS Şifresi Koymak
 Operatörler: Operatörler:
 RSS Sayfası Yapımı RSS Sayfası Yapımı
 Veritabanı Tablo İşlemleri Veritabanı Tablo İşlemleri
 

 

 

Copyright © 2008 Temha.neT