Asp.Net Sayfa Düzeyi TracHata ayıklama, Hata yönetimi

⚡ Akıllı Özet

ASP.NET hata ayıklama, tracVisual Studio'daki geliştirme ve hata yönetimi, geliştiricilerin sorunları erken aşamada tespit etmelerine ve istekleri takip etmelerine yardımcı olur. trace.axd ile ilgili olarak, geliştirme ve üretim yaşam döngüsü sırasında ele alınmayan istisnalar oluştuğunda kullanıcıları özel hata sayfalarına yönlendirir.

  • ???? Hata ayıklama: Visual Studio'daki kesme noktaları, çalışan bir ASP.NET sayfasını satır satır inceleyebilmeniz için yürütmeyi durdurur.
  • 🔎 Tracing: etkinleştirilmesi tracweb.config dosyasına e harfi eklenir. trace.axd, her isteği, durum kodunu ve zamanlamasını listeler.
  • 📄 Sayfa Tracing: Ekleme TracPage yönergesine e="true" eklemek, tek bir sayfanın yaşam döngüsü zamanlamasını gösterir.
  • 🚧 Özel Hatalar: `customErrors` etiketi, uygulama başarısız olduğunda kullanıcıları kullanıcı dostu bir hata sayfasına yönlendirir.
  • 🧭 İşlenmemiş İstisnalar: Global.asax dosyasındaki Application_Error, beklenmeyen hataları yakalar ve güvenli bir sayfaya yönlendirir.
  • 🗃️ Hata Kaydı: Server.GetLastError ayrıntılarını bir dosyaya yazmak, daha sonra hata ayıklama için sorunları kaydeder.

ASP.NET Sayfa Düzeyi TracHata ayıklama ve hata yönetimi

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 Uygulamaya kesme noktaları ekleme işlemine kesme noktaları denir. Bu kesme noktaları, çalışan bir programın yürütülmesini durdurmak için kullanılır. Bu, geliştiricinin bir programda belirli bir anda neler olup bittiğini anlamasına olanak tanır.

Bir program örneği ele alalım. Program, kullanıcıya "Hata ayıklama yapıyoruz" metnini gösteriyor. Diyelim ki uygulamayı çalıştırdığımızda, bir nedenden dolayı bu metin görüntülenmiyor. Sorunu belirlemek için bir kesme noktası eklememiz gerekiyor. Metni görüntüleyen kod satırına bir kesme noktası ekleyebiliriz. Bu kesme noktası, programın yürütülmesini durduracaktır. Bu noktada, programcı neyin yanlış gittiğini görebilir. Programcı, programı buna göre düzeltir.

Burada, önceki bölümlerde oluşturduğumuz DemoApplication uygulamasını kullanacağız. Aşağıdaki örnekte şunları göreceğiz:

  • 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?

Aşağıda ASP.NET'te demo uygulama oluşturma, kesme noktaları ekleme ve hata ayıklama adımları 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 olun.

ASP.NET'te bir uygulamada hata ayıklama

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.

ASP.NET'te bir uygulamada hata ayıklama

namespace DemoApplication
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("We are debugging");
        }
    }
}

3. Adım) Uygulamaya bir kesme noktası ekleyin.
Kesme noktası, Visual Studio'da programın yürütülmesinin durmasını istediğiniz noktadır.

ASP.NET'te bir uygulamada hata ayıklama

  1. Kesme noktası eklemek için, kesme noktasının eklenmesini istediğiniz sütuna tıklamanız gerekir. Yani bizim örneğimizde, programımızın "Response.Write" kod satırında durmasını istiyoruz. Kesme noktası eklemek için herhangi bir komut eklemenize gerek yoktur. Sadece kesme noktası eklemek istediğiniz satıra tıklamanız yeterlidir.
  2. 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.

ASP.NET'te bir uygulamada hata ayıklama

Çıktı:-

ASP.NET'te bir uygulamada hata ayıklama

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.

Nedir? TracASP.NET'te mi?

Uygulama tracing Bu özellik, istenen sayfalardan herhangi birinin hatayla sonuçlanıp sonuçlanmadığını görmeyi sağlar. tracEtkinleştirildiğinde, ek bir sayfa oluşturulur. trace.axd uygulamaya eklendi (aşağıdaki resme bakın). Bu sayfa uygulamaya eklenmiştir ve tüm istekleri ve durumlarını gösterecektir.

TracASP.NET'te

Nasıl Etkinleştirilir TracASP.NET'te bir uygulama için kodlama

Bunu nasıl mümkün kılacağımıza bakalım. tracbir ASP.NET uygulaması:

) 1 Adım Demo uygulamamız üzerinde çalışmaya başlayalım. Çözüm Gezgini'nden web.config dosyasını açın.

etkinleştirme tracASP.NET'te bir uygulama için geliştirme

) 2 Adım Aşağıdaki kod satırını web.config dosyasına ekleyin. trace ifadesi etkinleştirmek için kullanılır. tracBaşvuru için.

  • requestLimit'te trace ifadesi, yapılması gereken sayfa isteği sayısını belirtir. traced.
  • Örneğimizde, 40'lık bir sınır belirledik. Daha yüksek bir değer uygulamanın performansını düşüreceği için bir sınır koyuyoruz.

etkinleştirme tracASP.NET'te bir uygulama için geliştirme

<?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 enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

Demo uygulamasını Visual Studio'da çalıştırın.

Çıktı:-

etkinleştirme tracASP.NET'te bir uygulama için geliştirme

Şimdi göz atarsanız... URL http://localhost:53003/trace.axdBurada her istek için bilgileri göreceksiniz. Başvuruda herhangi bir hata olup olmadığını buradan kontrol edebilirsiniz. Sayfada aşağıdaki bilgi türleri gösterilmektedir:

  1. Web sayfası talebinin zamanı.
  2. İstenen web sayfasının adı.
  3. Web isteğinin durum kodu (200 durum kodu, isteğin başarılı olduğu anlamına gelir).
  4. "Ayrıntıları Görüntüle" bağlantısı, web isteği hakkında daha fazla ayrıntı görüntülemenizi sağlar. Sağlanan önemli ayrıntılardan biri, her web isteğinin başlığında hangi bilgilerin gönderildiğini gösteren başlık bilgileridir.

etkinleştirme tracASP.NET'te bir uygulama için geliştirme

Sayfa Düzeyi TracASP.NET'te

Sayfa Düzeyi Tracing ASP.NET'te, bir web sayfası işlenirken sayfa hakkında tüm genel bilgileri gösterir. Bu, bir sayfa herhangi bir nedenle çalışmadığında hata ayıklama için kullanışlıdır. Visual Studio, web isteğinde çağrılan her yöntemin süresi gibi sayfanın çeşitli yönleri hakkında ayrıntılı bilgi sağlar.

Örneğin, web uygulamanızda performans sorunu varsa, bu bilgiler sorunun giderilmesinde yardımcı olabilir. Bu bilgiler, uygulama Visual Studio'da çalıştırıldığında görüntülenir.

Nasıl Etkinleştirilir TracASP.NET'te Sayfa Düzeyinde Uygulama

Sayfa düzeyinde etkinleştirmenin nasıl yapılacağına bakalım. tracASP.NET uygulaması için:

) 1 Adım Demo uygulamamız üzerinde çalışmaya başlayalım. Çözüm Gezgini'nden demo.aspx dosyasını açın.

Sayfa Düzeyi TracASP.NET'te

) 2 Adım Sayfayı etkinleştirmek için aşağıdaki kod satırını ekleyin. tracSayfa bildiriminde, özniteliği eklemeniz yeterlidir. Trace="true". Bu kod satırı sayfa düzeyinde izin verecektir. tracing.

Sayfa Düzeyi TracASP.NET'te

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" Trace="true" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/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ı:-

Sayfa Düzeyi TracASP.NET'te

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, öncelikle bir HTML sayfası ekleyeceğiz. Bu sayfa kullanıcıya "Sorunu inceliyoruz" metnini gösterecektir. Ardından, hata sayfasının gösterilmesi için demo.aspx sayfamıza bazı hata kodları ekleyeceğiz. Aşağıda belirtilen adımları izleyelim.

) 1 Adım Demo uygulamamız üzerinde çalışalım. Uygulamaya bir HTML sayfası ekleyelim.

  1. Çözüm Gezgini'nde DemoApplication'a sağ tıklayın.
  2. Menüden Ekle->HTML Sayfası seçeneğini seçin.

ASP.NET'te Hata Yönetimi

) 2 Adım Bir sonraki adımda yeni HTML sayfasına bir isim vermemiz gerekiyor.

  1. Lütfen adı ErrorPage olarak belirtin.
  2. Devam etmek için Tamam düğmesine tıklayın.

ASP.NET'te Hata Yönetimi

) 3 Adım Hata sayfası otomatik olarak Visual Studio'da açılacaktır. Çözüm Gezgini'ne gittiğinizde, dosyanın eklendiğini göreceksiniz.

ASP.NET'te Hata Yönetimi

HTML sayfasına “Sorun üzerinde çalışıyoruz” kod satırını ekleyin. web.config dosyasında değişiklik yapmadan önce HTML dosyasını kapatmanıza gerek yoktur.

ASP.NET'te Hata Yönetimi

<!DOCTYPE html>
<html xmlns="http://www.w3.org/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ımlamanıza olanak tanır. defaultRedirect özelliği, önceki adımda oluşturduğumuz özel hata sayfasının adına ayarlanmıştır.

ASP.NET'te Hata Yönetimi

<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 biraz hatalı kod ekleyelim. Bu sayfayı Çözüm Gezgini'nde dosyaya çift tıklayarak açın.

ASP.NET'te Hata Yönetimi

Aşağıdaki kodu Demo.aspx.cs dosyasına ekleyin.

  • Bu kod satırları, bir dosyadan metin 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.

ASP.NET'te Hata Yönetimi

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

ASP.NET'te Hata Yönetimi

Yukarıdaki sayfada uygulamada bir hata oluştuğu gösterilmektedir. Sonuç olarak, kullanıcıya ErrorPage.html sayfası görüntülenir.

ASP.NET İşlenmeyen İstisna

En iyi senaryolarda bile, öngörülemeyen hatalar olabilir. Örneğin, bir kullanıcı uygulamada yanlış bir sayfaya yönlendirilirse, bu tahmin edilemez bir durumdur. Bu gibi durumlarda, ASP.NET kullanıcıyı ErrorPage.html sayfasına yönlendirebilir.

Şimdi bunun bir örneğini görelim.

  • ErrorPage.html dosyasını içeren aynı DemoApplication uygulamamızı kullanacağız.
  • Ve uygulamamızda bulunmayan bir web sayfasını görüntülemeye çalışacağız.
  • Bu durumda ErrorPage.html sayfasına yönlendirilmeliyiz. Bunu nasıl başaracağımıza dair adımları inceleyelim.

) 1 Adım Demo uygulamamız üzerinde çalışmaya başlayalım. Çözüm Gezgini'nden Global.asax.cs dosyasını açın.

ASP.NET İşlenmeyen İstisna

Not: Global.asax.cs dosyası, uygulamanın tüm sayfalarında geçerli olacak kodları 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 buna göre ErrorPage.html sayfasını görüntülemek için kullanılacaktır.

ASP.NET İşlenmeyen İstisna

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

            if (lastErrorWrapper.GetHttpCode() == 404)
                Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code Açıklama:-

  1. İlk satır, Application_Error olay işleyicisidir. Bu olay, bir uygulamada hata oluştuğunda çağrılır. Olay adının Application_Error olması ve parametrelerin yukarıda gösterildiği gibi olması gerektiğini unutmayın.
  2. 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.
  3. Ardından, son hatanın hata kodunun 404 olup olmadığını kontrol ederiz (404 hata kodu, kullanıcının bulunamayan bir sayfaya göz attığında döndürülen standart koddur). Hata kodu eşleşirse, kullanıcıyı ErrorPage.html sayfasına yönlendiririz.

Ş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.

ASP.NET'te İşlenmeyen İstisna

Yukarıdaki sayfada uygulamada bir hata oluştuğu gösterilmektedir. Sonuç olarak, kullanıcıya ErrorPage.html sayfası görüntülenir.

ASP.NET Hata Günlüğü

Uygulama hatalarını kaydetmek, geliştiricinin hatayı daha sonra ayıklamasına ve çözmesine yardımcı olur. ASP.NET, hataları kaydetme olanağına sahiptir. Bu işlem, 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.

Şimdi bunun bir örneğini görelim.

  • ErrorPage.html dosyasını içeren aynı DemoApplication uygulamamı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 nasıl yapacağımıza dair adımlara bakalım.

) 1 Adım Demo uygulamamız üzerinde çalışmaya başlayalım. Çözüm Gezgini'nden Global.asax.cs dosyasını açın.

ASP.NET Hata günlüğü

) 2 Adım Aşağıdaki kod satırını Global.asax.cs dosyasına ekleyin. Bu kod, hataları kontrol edecek ve buna göre ErrorPage.html sayfasını görüntüleyecektir. Aynı zamanda, hata ayrıntılarını AllErrors.txt adlı bir dosyaya kaydedeceğiz. Örneğimizde, bu dosyanın D sürücüsünde oluşturulması için kod yazacağız.

ASP.NET Hata günlüğü

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code Açıklama:-

  1. İlk satırda, Server.GetLastError yöntemi kullanılarak hatanın kendisi alınır. Ardından bu, exc değişkenine atanır.
  2. Ardından str adında boş bir dize değişkeni oluşturuyoruz. exc.Message özelliğini kullanarak gerçek hata mesajını alıyoruz. exc.Message özelliği, uygulama çalıştırılırken oluşan herhangi bir hata için tam mesajı içerecektir. Bu mesaj daha sonra dize değişkenine atanır.
  3. Ardından, AllErrors.txt adlı dosyayı tanımlıyoruz. Tüm hata mesajları bu dosyaya gönderilecek. Tüm hata mesajlarını içeren str dizesini bu dosyaya yazıyoruz.
  4. 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.

ASP.NET Hata günlüğü

Aynı zamanda, AllErrors.txt dosyasını açarsanız aşağıdaki bilgileri göreceksiniz.

ASP.NET Hata günlüğü

Hata mesajı daha sonra hata ayıklama amacıyla geliştiriciye iletilebilir.

SSS

Evet. GitHub Copilot gibi yapay zeka araçları, ASP.NET kodu için kesme noktaları önerebilir, bir istisnayı açıklayabilir ve düzeltmeler önerebilir. RevHer öneriyi inceleyin ve hatayı kendiniz yeniden oluşturun, çünkü yapay zeka uygulamaya özgü durumu yanlış yorumlayabilir.

Evet. Makine öğrenimi özellikleri, aşağıdaki gibi araçlarda mevcuttur. Azure Application Insights, istisnalarda veya yavaş isteklerde olağandışı artışları otomatik olarak işaretleyebilir. Bu, ekiplerin üretim sorunlarını ham günlük dosyalarını elle taramaktan daha hızlı bulmasına yardımcı olur.

Hayır. customErrors modunu kapalı bırakmak yığın izini açığa çıkarır. tracHassas bilgilerin her ziyaretçiyle paylaşılması güvenlik riski oluşturur. Üretim ortamında RemoteOnly veya On modunu kullanarak yalnızca yerel geliştiricilerin hata ayrıntılarının tamamını görmesini sağlayın.

RemoteOnly, ayrıntılı hata sayfalarını yalnızca yerel sunucudaki tarayıcılara gösterirken, uzak kullanıcılar defaultRedirect sayfasına yönlendirilir. Bu, bilgi sızdırmadan canlı bir sitede hata ayıklama için güvenli bir orta yoldur.

web.config dosyasındaki compilation öğesinde debug="false" olarak ayarlayın. Hata ayıklama modu optimizasyonları devre dışı bırakır, zaman aşımı sürelerini uzatır ve bellek kullanımını artırır; bu nedenle üretim sitelerinde her zaman kapalı olarak gönderilmelidir. Visual Studio.

Hayır. Açık bir trace.axd, saldırganlara başlık dosyalarını, oturum bilgilerini ve sunucu değişkenlerini ifşa edebilir. localOnly="true" olarak ayarlayın veya devre dışı bırakın. trackonuşlandırmadan önce tamamen tracVeriler hiçbir zaman uzaktaki kullanıcılara ifşa edilmez.

Server.Transfer, tarayıcı ayarlarını değiştirmeden isteği sunucudaki hata sayfasına iletir. URL veya gidiş-dönüş yolculuğu yapıyor. Response.Redirect, tarayıcıya yeni bir istek göndererek güncelliyor. URL hata sayfasına.

Hata mesajını ve yığın izini yakalayın. trace, talep edildi URLZaman damgası ve kullanıcı bağlamı gibi bilgiler, geliştiricilerin hatayı daha sonra yeniden üretmelerini sağlar. Application_Error içindeki Server.GetLastError, istisnayı ortaya çıkararak bir dosyaya veya veritabanına yazmanıza olanak tanır.

Bu yazıyı şu şekilde özetleyin: