Poziom strony Asp.Net Tracing, debugowanie, obsługa błędów

⚡ Inteligentne podsumowanie

Debugowanie ASP.NET, traci obsługa błędów w programie Visual Studio pomagają programistom wcześnie wykrywać problemy i śledzić żądania trace.axd i przekierowuje użytkowników do niestandardowych stron błędów, gdy w trakcie cyklu rozwoju i produkcji wystąpią nieobsłużone wyjątki.

  • 🐞 Debugowanie: Punkty przerwania w programie Visual Studio wstrzymują wykonywanie zadań, dzięki czemu można sprawdzić wiersz po wierszu działającą stronę ASP.NET.
  • 🔎 TracNS: Włączanie trace w web.config dodaje trace.axd, który zawiera listę wszystkich żądań, kod ich statusu i czas.
  • 📄 Strona TracNS: Dodawanie Trace=”true” w dyrektywie Page pokazuje czas cyklu życia pojedynczej strony.
  • 🚧 Błędy niestandardowe: Tag customErrors przekierowuje użytkowników do przyjaznej strony błędu w przypadku awarii aplikacji.
  • 🧭 Nieobsłużone wyjątki: Application_Error w pliku Global.asax wychwytuje nieoczekiwane błędy i przekierowuje do bezpiecznej strony.
  • 🗃️ Rejestrowanie błędów: Zapisanie szczegółów błędu Server.GetLastError w pliku rejestruje błędy w celu późniejszego debugowania.

Poziom strony ASP.NET Tracing, debugowanie i obsługa błędów

W każdej aplikacji w procesie rozwoju muszą wystąpić błędy. Ważne jest, aby móc wykryć błędy na wczesnym etapie.

W programie Visual Studio jest to możliwe w przypadku aplikacji ASP.NET. Program Visual Studio służy do debugowania i oferuje techniki obsługi błędów dla ASP.NET.

Co to jest debugowanie w ASP.NET?

Debugowanie to proces dodawania punktów przerwania do aplikacji. Punkty te służą do wstrzymywania wykonywania uruchomionego programu. Pozwala to programiście zrozumieć, co dzieje się w programie w danym momencie.

Rozważmy przykład programu. Program wyświetla użytkownikowi ciąg „Debugujemy”. Załóżmy, że po uruchomieniu aplikacji z jakiegoś powodu ciąg nie jest wyświetlany. Aby zidentyfikować problem, musimy dodać punkt przerwania. Możemy dodać punkt przerwania do wiersza kodu, który wyświetla ciąg. Ten punkt przerwania wstrzyma wykonywanie programu. W tym momencie programista widzi, co może być nie tak i odpowiednio koryguje program.

W tym przykładzie wykorzystamy naszą aplikację DemoApplication, którą stworzyliśmy we wcześniejszych rozdziałach. W poniższym przykładzie zobaczymy:

  • Jak sprawić, by aplikacja demonstracyjna wyświetlała ciąg znaków.
  • Jak dodać punkty przerwania do aplikacji.
  • Jak debugować aplikację przy użyciu tego punktu przerwania.

Jak debugować aplikację w ASP.NET

Poniżej przedstawiono kroki umożliwiające utworzenie aplikacji demonstracyjnej, dodanie punktów przerwania i debugowanie w ASP.NET:

Krok 1) Otwórz aplikację w programie Visual Studio.
Najpierw upewnijmy się, że nasza aplikacja internetowa jest otwarta w programie Visual Studio. Upewnij się, że aplikacja DemoApplication jest otwarta w programie Visual Studio.

Debuguj aplikację w ASP.NET

Krok 2) Teraz otwórz plik Demo.aspx.cs i dodaj poniższą linię kodu.

  • Właśnie dodajemy linię kodu Response.Write, aby wyświetlić ciąg znaków.
  • Zatem po uruchomieniu aplikacja powinna wyświetlić w przeglądarce internetowej ciąg „Debugujemy”.

Debuguj aplikację w ASP.NET

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

Krok 3) Dodaj punkt przerwania do aplikacji.
Punkt przerwania to punkt w programie Visual Studio, w którym chcesz zatrzymać wykonywanie programu.

Debuguj aplikację w ASP.NET

  1. Aby dodać punkt przerwania, należy kliknąć kolumnę, w której ma się on znaleźć. W naszym przypadku chcemy, aby program zatrzymał się na wierszu kodu „Response.Write”. Nie trzeba dodawać żadnego polecenia, aby dodać punkt przerwania. Wystarczy kliknąć wiersz, w którym ma się znaleźć punkt przerwania.
  2. Gdy to zrobisz, zauważysz, że kod zostanie zaznaczony na czerwono. Ponadto w kolumnie obok linii kodu pojawia się czerwona bańka.

Uwaga: W aplikacji można dodać wiele punktów przerwania.

Krok 4) Uruchom aplikację w trybie debugowania.
Teraz musisz uruchomić aplikację w trybie debugowania. W Visual Studio wybierz opcję menu Debug->Start Debugging.

Debuguj aplikację w ASP.NET

Wynik:-

Debuguj aplikację w ASP.NET

Gdy wykonasz wszystkie kroki poprawnie, wykonywanie programu zostanie przerwane. Visual Studio przejdzie do punktu przerwania i oznaczy wiersz kodu na żółto.

Teraz, jeśli programista uzna, że ​​kod jest nieprawidłowy, wykonanie można zatrzymać. Kod można następnie odpowiednio zmodyfikować. Aby kontynuować pracę programu, programista musi kliknąć przycisk F5 na klawiaturze.

Czym jest Tracw ASP.NET?

Zastosowanie tracING pozwala sprawdzić, czy żądane strony powodują błąd. Kiedy tracpo włączeniu zostanie wyświetlona dodatkowa strona o nazwie tracPlik e.axd został dodany do aplikacji (patrz obrazek poniżej). Ta strona jest dołączona do aplikacji i wyświetla wszystkie żądania i ich status.

Tracw ASP.NET

Jak włączyć Tractworzenie aplikacji w ASP.NET

Przyjrzyjmy się, jak włączyć tracing dla Aplikacja ASP.NET:

Krok 1) Popracujmy nad naszą aplikacją demonstracyjną. Otwórz plik web.config w Eksploratorze rozwiązań.

umożliwiać tractworzenie aplikacji w ASP.NET

Krok 2) Dodaj poniższy wiersz kodu do pliku web.config. tracOświadczenie jest używane w celu umożliwienia tracdla aplikacji.

  • Limit żądania w tracOświadczenie określa liczbę żądań stron, które muszą zostać tracwyd.
  • W naszym przykładzie limit wynosi 40. Podajemy limit, ponieważ wyższa wartość spowoduje pogorszenie wydajności aplikacji.

umożliwiać tractworzenie aplikacji w ASP.NET

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

Uruchom aplikację DemoApplication w programie Visual Studio.

Wynik:-

umożliwiać tractworzenie aplikacji w ASP.NET

Jeśli teraz przejdziesz do URL http://localhost:53003/trace.axd, zobaczysz informacje dla każdego żądania. Tutaj możesz sprawdzić, czy w aplikacji wystąpiły jakieś błędy. Na stronie wyświetlane są następujące typy informacji:

  1. Czas żądania strony internetowej.
  2. Nazwa żądanej strony internetowej.
  3. Kod statusu żądania internetowego (kod statusu 200 oznacza, że ​​żądanie zostało zrealizowane pomyślnie).
  4. Link „Wyświetl szczegóły” umożliwia wyświetlenie szczegółowych informacji o żądaniu internetowym. Jednym z ważnych szczegółów są informacje w nagłówku, które pokazują, jakie informacje są wysyłane w nagłówku każdego żądania internetowego.

umożliwiać tractworzenie aplikacji w ASP.NET

Poziom strony Tracw ASP.NET

Poziom strony TracING W ASP.NET wyświetla wszystkie ogólne informacje o stronie internetowej podczas jej przetwarzania. Jest to przydatne podczas debugowania, jeśli strona z jakiegokolwiek powodu nie działa. Visual Studio udostępnia szczegółowe informacje o różnych aspektach strony, takie jak czas wywołania każdej metody w żądaniu internetowym.

Na przykład, jeśli Twoja aplikacja internetowa ma problem z wydajnością, te informacje mogą pomóc w debugowaniu. Informacje te są wyświetlane po uruchomieniu aplikacji w programie Visual Studio.

Jak włączyć Tracna poziomie strony w ASP.NET

Przyjrzyjmy się, jak włączyć poziom strony tracdla aplikacji ASP.NET:

Krok 1) Popracujmy nad naszą aplikacją DemoApplication. Otwórz plik demo.aspx w Eksploratorze rozwiązań.

Poziom strony Tracw ASP.NET

Krok 2) Dodaj poniższy wiersz kodu, aby włączyć stronę tracing. W deklaracji strony wystarczy dodać atrybut Trace=”true”. Ta linia kodu umożliwi dostęp na poziomie strony tracing.

Poziom strony Tracw ASP.NET

<%@ 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>

Uruchom aplikację w programie Visual Studio.

Wynik:-

Poziom strony Tracw ASP.NET

Teraz, gdy strona internetowa Demo.aspx jest wyświetlana, otrzymasz mnóstwo informacji o stronie. Informacje takie jak czas dla każdego aspektu cyklu życia strony są wyświetlane na tej stronie.

Obsługa błędów: wyświetlanie niestandardowej strony błędu

In ASP.NET, możesz wyświetlać użytkownikom niestandardowe strony błędów. Jeśli aplikacja zawiera jakikolwiek błąd, niestandardowa strona wyświetli ten błąd użytkownikowi.

W naszym przykładzie najpierw dodamy stronę HTML. Strona ta wyświetli użytkownikowi komunikat „Badamy problem”. Następnie dodamy kod błędu do strony demo.aspx, aby wyświetlić stronę błędu. Wykonajmy poniższe kroki.

Krok 1) Popracujmy nad naszą aplikacją demonstracyjną. Dodajmy do niej stronę HTML.

  1. Kliknij prawym przyciskiem myszy aplikację DemoApplication w Eksploratorze rozwiązań.
  2. Wybierz opcję menu Dodaj->Strona HTML.

Obsługa błędów w ASP.NET

Krok 2) W kolejnym kroku musimy nadać nazwę nowej stronie HTML.

  1. Podaj nazwę ErrorPage.
  2. Kliknij przycisk OK, aby kontynuować.

Obsługa błędów w ASP.NET

Krok 3) Strona ErrorPage automatycznie otworzy się w programie Visual Studio. Jeśli przejdziesz do Eksploratora rozwiązań, zobaczysz dodany plik.

Obsługa błędów w ASP.NET

Dodaj wiersz kodu „We are looking into the problem” do strony HTML. Nie musisz zamykać pliku HTML przed wprowadzeniem zmian w pliku web.config.

Obsługa błędów w ASP.NET

<!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>

Krok 4) Teraz musisz wprowadzić zmianę w pliku web.config. Ta zmiana spowoduje powiadomienie, że za każdym razem, gdy w aplikacji wystąpi błąd, konieczne będzie wyświetlenie niestandardowej strony błędu. Tag customErrors umożliwia zdefiniowanie niestandardowej strony błędu. Właściwość defaultRedirect jest ustawiona na nazwę naszej niestandardowej strony błędu utworzonej w poprzednim kroku.

Obsługa błędów w ASP.NET

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime targetFramework="4.0" />

        <customErrors mode="On" defaultRedirect="ErrorPage.html">
        </customErrors>

    </system.web>
</configuration>

Krok 5) Teraz dodajmy trochę błędnego kodu do strony demo.aspx.cs. Otwórz tę stronę, klikając dwukrotnie plik w Eksploratorze rozwiązań.

Obsługa błędów w ASP.NET

Dodaj poniższy kod do pliku Demo.aspx.cs.

  • Te wiersze kodu służą do odczytywania wierszy tekstu z pliku.
  • Plik powinien znajdować się na dysku D i mieć nazwę Example.txt.
  • Ale w naszej sytuacji ten plik tak naprawdę nie istnieje. Zatem ten kod spowoduje błąd podczas działania aplikacji.

Obsługa błędów w ASP.NET

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);
        }
    }
}

Teraz wykonaj kod w visual Studio i powinieneś otrzymać poniższe dane wyjściowe.

Wynik:-

Obsługa błędów w ASP.NET

Powyższa strona pokazuje, że w aplikacji wystąpił błąd. W rezultacie użytkownikowi wyświetlana jest strona ErrorPage.html.

Nieobsługiwany wyjątek ASP.NET

Nawet w najlepszym scenariuszu mogą wystąpić błędy, których po prostu nie da się przewidzieć. Załóżmy, że użytkownik przejdzie do niewłaściwej strony w aplikacji. Tego nie da się przewidzieć. W takich przypadkach ASP.NET może przekierować użytkownika do pliku ErrorPage.html.

Zobaczmy przykład.

  • Użyjemy tej samej aplikacji DemoApplication, która ma plik ErrorPage.html.
  • Spróbujemy wyświetlić stronę internetową, która nie istnieje w naszej aplikacji.
  • W tym przypadku powinniśmy zostać przekierowani na naszą stronę ErrorPage.html. Zobaczmy, jak to zrobić.

Krok 1) Popracujmy nad naszą aplikacją demonstracyjną. Otwórz plik Global.asax.cs w Eksploratorze rozwiązań.

Nieobsługiwany wyjątek ASP.NET

Uwaga: Plik Global.asax.cs służy do dodawania kodu, który będzie miał zastosowanie na wszystkich stronach aplikacji.

Krok 2) Dodaj poniższy wiersz kodu do pliku Global.asax.cs. Te wiersze będą używane do sprawdzania błędów i wyświetlania strony ErrorPage.html.

Nieobsługiwany wyjątek ASP.NET

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 Wyjaśnienie:-

  1. Pierwszy wiersz to obsługa zdarzenia Application_Error. To zdarzenie jest wywoływane za każdym razem, gdy w aplikacji wystąpi błąd. Należy pamiętać, że nazwa zdarzenia musi brzmieć Application_Error, a parametry powinny być takie, jak pokazano powyżej.
  2. Następnie definiujemy obiekt typu klasy HttpException. Jest to standardowy obiekt, który będzie przechowywał wszystkie szczegóły błędu. Następnie używamy metody Server.GetLastError, aby uzyskać wszystkie szczegóły ostatniego błędu, który wystąpił w aplikacji.
  3. Następnie sprawdzamy, czy kod ostatniego błędu to 404 (kod błędu 404 to standardowy kod zwracany, gdy użytkownik przegląda stronę, której nie znaleziono). Jeśli kod błędu się zgadza, przenosimy użytkownika na stronę ErrorPage.html.

Teraz uruchom kod w programie Visual Studio. Powinieneś otrzymać poniższy wynik.

Wynik:-

Przeglądaj stronę http://localhost:53003/Demo1.aspx. Pamiętaj, że w naszej aplikacji nie ma pliku Demo1.aspx. Otrzymasz wówczas poniższe dane wyjściowe.

Nieobsługiwany wyjątek w ASP.NET

Powyższa strona pokazuje, że w aplikacji wystąpił błąd. W rezultacie użytkownikowi wyświetlana jest strona ErrorPage.html.

Rejestrowanie błędów ASP.NET

Rejestrując błędy aplikacji, programista może później debugować i rozwiązywać błędy. ASP.NET umożliwia rejestrowanie błędów. Odbywa się to w pliku Global.asax.cs podczas rejestrowania błędu. Podczas rejestrowania komunikat o błędzie może zostać zapisany w pliku dziennika.

Zobaczmy przykład.

  • Użyjemy tej samej aplikacji DemoApplication, która ma plik ErrorPage.html.
  • Spróbujemy wyświetlić stronę internetową, która nie istnieje w naszej aplikacji.
  • W tym przypadku powinniśmy zostać przekierowani na naszą stronę ErrorPage.html.
  • Jednocześnie zapiszemy komunikat o błędzie do pliku dziennika. Zobaczmy, jak to zrobić.

Krok 1) Popracujmy nad naszą aplikacją demonstracyjną. Otwórz plik Global.asax.cs w Eksploratorze rozwiązań.

Rejestrowanie błędów ASP.NET

Krok 2) Dodaj poniższy wiersz kodu do pliku Global.asax.cs. Sprawdzi on błędy i wyświetli odpowiednią stronę ErrorPage.html. Jednocześnie zapiszemy szczegóły błędów w pliku AllErrors.txt. W naszym przykładzie napiszemy kod, który utworzy ten plik na dysku D.

Rejestrowanie błędów ASP.NET

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 Wyjaśnienie:-

  1. Pierwszy wiersz służy do pobrania samego błędu za pomocą metody Server.GetLastError. Jest on następnie przypisywany do zmiennej exc.
  2. Następnie tworzymy pustą zmienną typu string o nazwie str. Rzeczywisty komunikat o błędzie jest pobierany za pomocą właściwości exc.Message. Właściwość exc.Message będzie zawierała dokładny komunikat o każdym błędzie, który wystąpi podczas uruchamiania aplikacji. Jest on następnie przypisywany do zmiennej typu string.
  3. Następnie definiujemy plik o nazwie AllErrors.txt. To właśnie do niego będą wysyłane wszystkie komunikaty o błędach. Zapisujemy do niego ciąg znaków str, który zawiera wszystkie komunikaty o błędach.
  4. Na koniec przenosimy użytkownika do pliku ErrorPage.html.

Wynik:-

Przeglądaj stronę http://localhost:53003/Demo1.aspx. Pamiętaj, że w naszej aplikacji nie ma pliku Demo1.aspx. Otrzymasz wówczas poniższe dane wyjściowe.

Rejestrowanie błędów ASP.NET

Jednocześnie, jeśli otworzysz plik AllErrors.txt, zobaczysz poniższe informacje.

Rejestrowanie błędów ASP.NET

Komunikat o błędzie można później przekazać deweloperowi w celu przeprowadzenia debugowania.

FAQ

Tak. Narzędzia AI, takie jak GitHub Copilot, mogą sugerować punkty przerwania, wyjaśniać wyjątki i proponować poprawki do kodu ASP.NET. RevPrzejrzyj każdą sugestię i odtwórz błąd samodzielnie, ponieważ AI może błędnie odczytać stan specyficzny dla danej aplikacji.

Tak. Funkcje uczenia maszynowego w narzędziach takich jak Azure Application Insights może automatycznie sygnalizować nietypowe skoki liczby wyjątków lub powolne żądania. Pomaga to zespołom wykrywać problemy produkcyjne szybciej niż w przypadku ręcznego skanowania surowych plików dziennika.

Nie. Pozostawienie trybu customErrors wyłączonego powoduje ujawnienie stosu traces i poufne informacje każdemu odwiedzającemu, co stanowi zagrożenie bezpieczeństwa. Użyj trybu RemoteOnly lub On w środowisku produkcyjnym, aby tylko lokalni programiści widzieli pełne szczegóły błędów.

RemoteOnly wyświetla szczegółowe strony błędów tylko przeglądarkom na serwerze lokalnym, podczas gdy użytkownicy zdalni są przekierowywani na stronę defaultRedirect. To bezpieczne rozwiązanie pośrednie do debugowania działającej witryny bez wycieku informacji.

Ustaw debug=”false” w elemencie kompilacji pliku web.config. Tryb debugowania wyłącza optymalizacje, utrzymuje długie limity czasu i zwiększa wykorzystanie pamięci, dlatego witryny produkcyjne powinny być zawsze wysyłane z wyłączonym trybem debugowania. visual Studio.

Nie. Otwarte trace.axd może ujawnić atakującym nagłówki, sesje i zmienne serwera. Ustaw localOnly=”true” lub wyłącz. traccałkowicie przed wdrożeniem, więc tracDane te nigdy nie są udostępniane użytkownikom zdalnym.

Server.Transfer przekazuje żądanie do strony błędu na serwerze bez zmiany przeglądarki URL lub w obie strony. Response.Redirect wysyła nowe żądanie do przeglądarki, aktualizując URL do strony błędu.

Przechwyć komunikat wyjątku, stos trace, zażądano URL, znacznik czasu i kontekst użytkownika. Te dane pozwalają programistom odtworzyć błąd później. Server.GetLastError w Application_Error ujawnia wyjątek, umożliwiając zapisanie go w pliku lub bazie danych.

Podsumuj ten post następująco: