Asp.Net Sayfa Düzeyinde İzleme, Hata Ayıklama, Hata İşleme [Örnek]
Herhangi bir uygulamada, geliştirme sürecinde hataların oluşması kaçınılmazdır. Hataları erken aşamada keşfedebilmek önemlidir.
Visual Studio'da ASP.Net uygulamaları için bunu yapmak mümkündür. Visual Studio Hata Ayıklama için kullanılır ve ASP.Net için hata işleme tekniklerine sahiptir.
ASP.NET'te Hata Ayıklama Nedir?
Hata ayıklama, bir uygulamaya kesme noktaları ekleme işlemidir. Bu kesme noktaları çalışan bir programın yürütülmesini duraklatmak için kullanılır. Bu, geliştiricinin belirli bir zamanda bir programda neler olduğunu anlamasını sağlar.
Bir program örneğini ele alalım. Program kullanıcıya “Hata ayıklıyoruz” dizesini görüntüler. Uygulamayı çalıştırdığımızda bir nedenden dolayı dizenin görüntülenmediğini varsayalım. Sorunu tanımlamak için bir kesme noktası eklememiz gerekir. Dizeyi görüntüleyen kod satırına bir kesme noktası ekleyebiliriz. Bu kesme noktası programın yürütülmesini duraklatacaktır. Bu noktada programcı neyin yanlış gittiğini görebilir. Programcı programı buna göre düzeltir.
Burada örnekte, önceki bölümlerde oluşturulan 'DemoApplication'ımızı kullanacağız. Aşağıdaki örnekte,
- Demo uygulamasının bir dize görüntülemesi nasıl sağlanır?
- Bir uygulamaya kesme noktaları nasıl eklenir?
- Bu kesme noktasını kullanarak uygulamada nasıl hata ayıklanır.
ASP.NET'te bir uygulamada hata ayıklama nasıl yapılır
ASP.Net'te demo uygulaması oluşturma, kesme noktaları ekleme ve hata ayıklama adımları aşağıda verilmiştir:
Adım 1) Uygulamayı Visual Studio'da açın
Öncelikle web uygulamamızın Visual Studio'da açık olduğundan emin olalım. DemoApplication'ın Visual Studio'da açık olduğundan emin olalım.
Adım 2) Şimdi Demo.aspx.cs dosyasını açın ve aşağıdaki kod satırını ekleyin.
- Bir dize görüntülemek için yalnızca Response.Write kod satırını ekliyoruz.
- Bu nedenle uygulama çalıştırıldığında web tarayıcısında "Hata ayıklıyoruz" dizesini görüntülemesi gerekir.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
Adım 3) Uygulamaya bir kesme noktası ekleyin
Kesme noktası, Visual Studio'da programın yürütülmesinin durmasını istediğiniz noktadır.
- Bir kesme noktası eklemek için kesme noktasının eklenmesini istediğiniz sütuna tıklamanız gerekir. Yani bizim durumumuzda programımızın “Response.Write” kod satırında durmasını istiyoruz. Kesme noktası eklemek için herhangi bir komut eklemenize gerek yoktur. Kesme noktası eklemek istediğiniz satıra tıklamanız yeterlidir.
- Bu yapıldıktan sonra kodun kırmızı renkle işaretlendiğini fark edeceksiniz. Ayrıca kod satırının yanındaki sütunda kırmızı bir baloncuk beliriyor.
Not: - Bir uygulamaya birden fazla kesme noktası ekleyebilirsiniz
Adım 4) Uygulamayı Hata Ayıklama modunda çalıştırın
Şimdi uygulamanızı Hata Ayıklama Modu'nu kullanarak çalıştırmanız gerekiyor. Visual Studio'da, Debug->Start Debugging menü seçeneğini seçin.
Çıktı:-
Tüm adımları doğru bir şekilde gerçekleştirdiğinizde programın yürütülmesi kesilecektir. Visual Studio kesme noktasına gidecek ve kod satırını sarı ile işaretleyecektir.
Artık programcı kodun yanlış olduğunu hissederse yürütme durdurulabilir. Daha sonra kod buna göre değiştirilebilir. Programa devam etmek için programcının klavyedeki F5 tuşuna basması gerekir.
ASP.NET'te İzleme Nedir?
Uygulama izleme, istenen sayfalardan herhangi birinin hatayla sonuçlanıp sonuçlanmadığını görmenize olanak tanır. İzleme etkinleştirildiğinde uygulamaya trace.axd adı verilen ekstra bir sayfa eklenir. (Aşağıdaki resme bakın). Bu sayfa başvuruya eklenmiştir. Bu sayfada tüm istekler ve durumları gösterilecektir.
ASP.NET'te bir uygulama için izlemeyi etkinleştirme
Bir izlemenin nasıl etkinleştirileceğine bakalım. ASP.Net uygulaması:
) 1 Adım 'DemoUygulamamız' üzerinde çalışalım. Çözüm Gezgini'nden web.config dosyasını açın.
) 2 Adım Aşağıdaki kod satırını Web.config dosyasına ekleyin.
Trace deyimi, uygulama için izlemeyi etkinleştirmek için kullanılır.
- Trace ifadesinde 'requestLimit' kullanılır. İzlenmesi gereken sayfa isteklerinin sayısını belirtir.
- Örneğimizde 40 limit veriyoruz. Limit veriyoruz çünkü daha yüksek bir değer uygulamanın performansını düşürecektir.
<?xml version="1.0" encoding="utf-8"?> <! -- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <trace enable="true" pageOutput="false" requestLimit="40" localOnly="false"/> </system.web> </configuration>
“demoapplication”ı Visual Studio’da çalıştırın.
Çıktı:-
Şimdi URL'ye göz atarsanız – http://localhost:53003/trace.axd , her istek için bilgileri göreceksiniz. Burada bir uygulamada herhangi bir hata olup olmadığını görebilirsiniz. Yukarıdaki sayfada aşağıdaki bilgi türleri gösterilmektedir
- Web sayfası talebinin zamanı.
- Talep edilen web sayfasının adı.
- Web isteğinin durum kodu. (200 durum kodu, isteğin başarılı olduğu anlamına gelir).
- Web isteği hakkında daha fazla ayrıntı görüntülemenize izin verdiğiniz Ayrıntıları görüntüle. Bunun bir örneği aşağıda gösterilmiştir. Sağlanan önemli ayrıntılı bilgilerden biri başlık bilgisidir. Bu bilgi, her web isteğinin başlığında gönderilen bilginin ne olduğunu gösterir.
ASP.NET'te Sayfa Düzeyinde İzleme
Sayfa Düzeyinde İzleme ASP.Net'te bir web sayfası işlenirken tüm genel bilgileri gösterir. Bu, bir sayfa herhangi bir nedenle çalışmıyorsa hata ayıklamada yararlıdır. Visual Studio, sayfanın çeşitli yönleri ve web isteğinde çağrılan her yöntem için zaman gibi bilgiler hakkında ayrıntılı bilgi sağlar.
Örneğin, web uygulamanızda bir performans sorunu varsa, bu bilgi sorunun giderilmesine yardımcı olabilir. Bu bilgi, uygulama Visual Studio'da çalıştığında görüntülenir.
ASP.NET'te Sayfa düzeyinde izlemeyi etkinleştirme
Bir ASP.Net uygulaması için sayfa düzeyinde izlemenin nasıl etkinleştirileceğine bakalım:
) 1 Adım DemoUygulamamız üzerinde çalışalım. Demo.aspx dosyasını Solution Explorer'dan açın
) 2 Adım Sayfa izlemeyi etkinleştirmek için aşağıdaki kod satırını ekleyin. Sayfa bildirimine Trace=”true” satırını eklemeniz yeterlidir. Bu kod satırı sayfa düzeyinde izlemeye olanak sağlayacaktır.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %> <!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server”> </form> </body> </html>
Uygulamayı Visual Studio’da çalıştırın.
Çıktı:-
Artık Demo.aspx web sayfası görüntülendiğinde, sayfa hakkında birçok bilgi alacaksınız. Sayfa yaşam döngüsünün her aşamasına ilişkin süre gibi bilgiler bu sayfada görüntülenir.
Hata İşleme: Özel Bir Hata Sayfası Görüntüleme
In ASP.Net, kullanıcılara özel hata sayfalarının görüntülenmesini sağlayabilirsiniz. Bir uygulama herhangi bir hata içeriyorsa, özel bir sayfa bu hatayı kullanıcıya gösterecektir.
Örneğimizde ilk olarak bir HTML sayfası ekleyeceğiz. Bu sayfada kullanıcıya "Sorunu araştırıyoruz" şeklinde bir dize görüntülenecektir. Daha sonra demo.aspx sayfamıza hata sayfasının gösterilmesi için bazı hata kodları ekleyeceğiz.
Aşağıda belirtilen adımları takip edelim
) 1 Adım DemoUygulamamız üzerinde çalışalım. Uygulamaya bir HTML sayfası ekleyelim
- Solution Explorer'da DemoUygulamasına sağ tıklayın
- 'Ekle'->HTML Sayfası menü seçeneğini seçin
) 2 Adım Bir sonraki adımda yeni HTML sayfasına bir isim vermemiz gerekiyor.
- Adı 'Hata Sayfası' olarak girin.
- Devam etmek için 'Tamam' düğmesini tıklayın.
) 3 Adım Visual Studio'da Errorpage otomatik olarak açılacaktır. Solution Explorer'a giderseniz dosyanın eklendiğini göreceksiniz.
HTML sayfasına “Sorunu araştırıyoruz” kod satırını ekleyin. web.config dosyasında değişiklik yapmadan önce HTML dosyasını kapatmanıza gerek yoktur.
<!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
) 4 Adım Şimdi web.config dosyasında bir değişiklik yapmanız gerekiyor. Bu değişiklik, uygulamada bir hata oluştuğunda özel hata sayfasının görüntülenmesi gerektiğini bildirecektir.
'customErrors' etiketi özel bir hata sayfası tanımlamaya olanak tanır. defaultRedirect özelliği, önceki adımda oluşturulan özel hata sayfamızın adına ayarlanır.
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <customErrors mode="On" defaultRedirect="ErrorPage.html"> </customErrors> </system.web> </configuration>
) 5 Adım Şimdi demo.aspx.cs sayfasına hatalı bir kod ekleyelim. Solution Explorer'da dosyaya çift tıklayarak bu sayfayı açın
Aşağıdaki kodu Demo.aspx.cs dosyasına ekleyin.
- Bu kod satırları, bir dosyadaki metnin satırlarını okumak için tasarlanmıştır.
- Dosyanın D sürücüsünde 'Example.txt' adıyla bulunması gerekiyor.
- Ancak bizim durumumuzda bu dosya gerçekte mevcut değil. Yani bu kod uygulama çalıştırıldığında hataya neden olacaktır.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String path = @"D:\Example.txt"; string[] lines; lines = File.ReadAllLines(path); } } }
Şimdi kodu çalıştırın Visual Studio ve aşağıdaki çıktıyı almalısınız.
Çıktı:-
Yukarıdaki sayfa uygulamada bir hatanın tetiklendiğini göstermektedir. Sonuç olarak kullanıcıya Error.html sayfası görüntülenir.
ASP.NET İşlenmeyen İstisna
En iyi senaryolarda bile öngörülemeyen hata durumları olabilir.
Bir kullanıcının uygulamada yanlış sayfaya göz attığını varsayalım. Bu tahmin edilemeyecek bir şeydir. Bu gibi durumlarda ASP.Net kullanıcıyı errorpage.html sayfasına yönlendirebilir.
Bu konuda bir örnek görelim.
- Errorpage.html dosyasına sahip olan aynı 'DemoApplication'ımızı kullanacağız.
- Ve uygulamamızda bulunmayan bir web sayfasını görüntülemeye çalışacağız.
- Bu durumda ErrorPage.html sayfamıza yönlendirilmemiz gerekir. Bunu başarmak için gereken adımları görelim.
) 1 Adım DemoUygulamamız üzerinde çalışalım. Global.asax.cs dosyasını Solution Explorer'dan açın
NOT: Global.asax.cs dosyası, uygulamadaki tüm sayfalarda geçerli olacak kodu eklemek için kullanılır.
) 2 Adım Aşağıdaki kod satırını global.asax.cs dosyasına ekleyin. Bu satırlar hataları kontrol etmek ve ErrorPage.html sayfasını buna göre görüntülemek için kullanılacaktır.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { ? HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if(lastErrorWrapper.GetHttpCode() == 404) Server.T ransfer("~/ErrorPage.html"); } } }
Kod Açıklaması:-
- İlk satır Application_Error olay işleyicisidir. Bu olay, bir uygulamada bir hata oluştuğunda çağrılır. Etkinlik adının 'Application_Error' olması gerektiğini unutmayın. Ve parametreler yukarıda gösterildiği gibi olmalıdır.
- Sonra, HttpException sınıf türünden bir nesne tanımlıyoruz. Bu, hatanın tüm ayrıntılarını tutacak standart bir nesnedir. Daha sonra, uygulamada meydana gelen son hatanın tüm ayrıntılarını almak için Server.GetLastError yöntemini kullanırız.
- Daha sonra son hatanın hata kodunun 404 olup olmadığını kontrol ediyoruz. (404 hata kodu, kullanıcı bulunamayan bir sayfaya göz attığında döndürülen standart koddur). Daha sonra hata kodu eşleşirse kullanıcıyı ErrorPage.html sayfasına aktarıyoruz.
Şimdi kodu Visual Studio'da çalıştırın ve aşağıdaki çıktıyı almalısınız
Çıktı:-
Sayfaya göz atın http://localhost:53003/Demo1.aspx . Uygulamamızda Demo1.aspx'in bulunmadığını unutmayın. Daha sonra aşağıdaki çıktıyı alacaksınız.
Yukarıdaki sayfa uygulamada bir hatanın tetiklendiğini göstermektedir. Sonuç olarak kullanıcıya Error.html sayfası görüntülenir.
ASP.NET Hata günlüğü
Uygulama hatalarını kaydederek, geliştiricinin hatayı daha sonraki bir zamanda ayıklayıp çözmesine yardımcı olur. ASP.Net hataları kaydetme olanağına sahiptir. Bu, hata yakalandığında Global.asax.cs dosyasında yapılır. Yakalama işlemi sırasında, hata mesajı bir günlük dosyasına yazılabilir.
Bu konuda bir örnek görelim.
- Errorpage.html dosyasına sahip olan aynı DemoUygulamamızı kullanacağız.
- Ve uygulamamızda bulunmayan bir web sayfasını görüntülemeye çalışacağız.
- Bu durumda ErrorPage.html sayfamıza yönlendirilmemiz gerekir.
- Aynı zamanda hata mesajını bir günlük dosyasına yazacağız. Bunu başarmak için gereken adımları görelim.
) 1 Adım DemoUygulamamız üzerinde çalışalım. Global.asax.cs dosyasını Solution Explorer'dan açın
) 2 Adım Aşağıdaki kod satırını global.asax.cs'ye ekleyin. Hataları kontrol edecek ve ErrorPage.html sayfasını buna göre görüntüleyecektir. Ayrıca aynı zamanda, hata ayrıntılarını 'AllErrors.txt' adlı bir dosyaya kaydedeceğiz. Örneğimiz için, bu dosyanın D sürücüsünde oluşturulması için kod yazacağız.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str =""; str = exc.Message; String path = @"D:\AllErrors.txt"; File.WriteAllTest(path,str); Server.trrasfer("~/ErrorPage.html"); } } }
Kod Açıklaması:-
- İlk satır 'Server.GetLastError' yöntemini kullanarak hatanın kendisini almaktır. Bu daha sonra 'exc' değişkenine atanır.
- Daha sonra 'str' adında boş bir dize değişkeni yaratıyoruz. 'exc.Message' özelliğini kullanarak asıl hata mesajını alıyoruz. exc.Message özelliği, uygulamayı çalıştırırken meydana gelen herhangi bir hata için tam mesajı içerecektir. Bu daha sonra dize değişkenine atanır.
- Daha sonra 'AllErrrors.txt' isimli dosyayı tanımlıyoruz. Tüm hata mesajlarının gönderileceği yer burasıdır. Bu dosyaya tüm hata mesajlarını içeren 'str' stringini yazıyoruz.
- Son olarak kullanıcıyı ErrorPage.html dosyasına aktarıyoruz.
Çıktı:-
Sayfaya göz atın http://localhost:53003/Demo1.aspx . Uygulamamızda Demo1.aspx'in bulunmadığını unutmayın. Daha sonra aşağıdaki çıktıyı alacaksınız.
Aynı zamanda 'AllErrors.txt' dosyasını açtığınızda aşağıdaki bilgileri göreceksiniz.
Hata mesajı daha sonra hata ayıklama amacıyla geliştiriciye iletilebilir.
ÖZET
- ASP.Net, hata ayıklama ve Hata işleme işlemlerini gerçekleştirme olanağına sahiptir.
- Hata ayıklama, koda kesme noktaları eklenerek gerçekleştirilebilir. Daha sonra kodu hata ayıklamak için Visual Studio'da Hata Ayıklama ile Başlat seçeneği çalıştırılır.
- İzleme, uygulamayı çalıştırırken daha fazla bilgi sağlama olanağıdır. Bu, uygulama veya sayfa düzeyinde yapılabilir.
- Sayfa düzeyinde, sayfa yönergesine Trace=true kodunun eklenmesi gerekir.
- Uygulama düzeyinde uygulama için Trace.axd adında ekstra bir sayfa oluşturulur. Bu, gerekli tüm izleme bilgilerini sağlar.