Śledzenie na poziomie strony Asp.Net, debugowanie, obsługa błędów (przykład)

Spisie treści:

Anonim

W każdej aplikacji błędy mogą wystąpić podczas procesu tworzenia. Ważne jest, aby móc wykryć błędy na wczesnym etapie.

W Visual Studio można to zrobić dla aplikacji ASP.Net. Program Visual Studio jest używany do debugowania i ma techniki obsługi błędów dla ASP.Net.

W tym samouczku nauczysz się:

  • Co to jest debugowanie w programie ASP.NET?
  • Co to jest śledzenie w ASP.NET?
  • Śledzenie na poziomie strony
  • Obsługa błędów: wyświetlanie niestandardowej strony błędu
  • Nieobsługiwany wyjątek ASP.NET
  • Rejestrowanie błędów ASP.NET

Co to jest debugowanie w programie ASP.NET?

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

Weźmy przykład programu. Program wyświetla użytkownikowi napis „Debugujemy”. Załóżmy, że z jakiegoś powodu, gdy uruchamiamy aplikację, ciąg znaków nie jest wyświetlany. Aby zidentyfikować problem, musimy dodać punkt przerwania. Możemy dodać punkt przerwania do linii kodu, która wyświetla ciąg. Ten punkt przerwania wstrzyma wykonywanie programu. W tym momencie programista może zobaczyć, co się prawdopodobnie dzieje. Programista odpowiednio koryguje program.

W tym przykładzie użyjemy naszej aplikacji DemoApplication, która została utworzona we wcześniejszych rozdziałach. W poniższym przykładzie zobaczymy

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

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

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.
  • Tak więc, gdy aplikacja jest wykonywana, powinna wyświetlać w przeglądarce internetowej napis „Debugujemy”.

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) Teraz dodajmy punkt przerwania. Punkt przerwania to punkt w programie Visual Studio, w którym chcesz zatrzymać wykonywanie programu.

  1. Aby dodać punkt przerwania, musisz kliknąć kolumnę, w której chcesz wstawić punkt przerwania. Dlatego w naszym przypadku chcemy, aby nasz program zatrzymał się na linii kodu „Response.Write”. Nie musisz dodawać żadnego polecenia, aby dodać punkt przerwania. Wystarczy kliknąć linię, w której chcesz dodać punkt przerwania.
  2. Gdy to zrobisz, zauważysz, że kod zostanie zaznaczony na czerwono. W kolumnie obok linii kodu pojawia się również czerwony bąbelek.

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

Krok 4) Teraz musisz uruchomić aplikację w trybie debugowania. W programie Visual Studio wybierz opcję menu Debuguj -> Rozpocznij debugowanie.

Wynik:-

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

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

Co to jest śledzenie w ASP.NET?

Śledzenie aplikacji pozwala sprawdzić, czy żądane strony powodują błąd. Gdy śledzenie jest włączone, do aplikacji dodawana jest dodatkowa strona o nazwie trace.axd. (Zobacz zdjęcie poniżej). Ta strona jest dołączona do wniosku. Ta strona pokaże wszystkie żądania i ich status.

Przyjrzyjmy się, jak włączyć śledzenie dla aplikacji.

Krok 1) Pracujmy nad naszą „DemoApplication”. Otwórz plik web.config w Eksploratorze rozwiązań.

Krok 2) Dodaj poniższy wiersz kodu do pliku Web.config.

Instrukcja trace służy do włączania śledzenia dla aplikacji.

  • Używany jest „requestLimit” w instrukcji śledzenia. Określa liczbę żądań stron, które należy śledzić.
  • W naszym przykładzie podajemy limit 40. Podajemy limit, ponieważ wyższa wartość obniży wydajność aplikacji.

Uruchom „aplikację demonstracyjną” w programie Visual Studio.

Wynik:-

Jeśli przejdziesz teraz do adresu URL - http: // localhost: 53003 / trace.axd , zobaczysz informacje dla każdego żądania. Tutaj możesz sprawdzić, czy w aplikacji nie występują błędy. Na powyższej stronie pokazane są następujące rodzaje informacji

  1. Czas żądania strony internetowej.
  2. Nazwa żądanej strony internetowej.
  3. Kod stanu żądania internetowego. (kod statusu 200 oznacza, że ​​żądanie powiodło się).
  4. Wyświetl szczegóły, które pozwalają wyświetlić więcej szczegółów dotyczących żądania internetowego. Przykład tego przedstawiono poniżej. Jedną ważną szczegółową informacją są informacje nagłówka. Te informacje pokazują, jakie informacje są wysyłane w nagłówku każdego żądania internetowego.

Śledzenie na poziomie strony

Śledzenie stron wyświetla wszystkie ogólne informacje o stronie internetowej podczas jej przetwarzania. Jest to przydatne w debugowaniu, jeśli strona nie działa z jakiegokolwiek powodu.

Visual Studio zapewni szczegółowe informacje o różnych aspektach strony. Informacje, takie jak czas dla każdej metody wywoływanej w żądaniu sieci Web. Na przykład, jeśli aplikacja internetowa ma problem z wydajnością, te informacje mogą pomóc w debugowaniu problemu. Te informacje są wyświetlane, gdy aplikacja jest uruchamiana w programie Visual Studio.

Przyjrzyjmy się, jak włączyć śledzenie aplikacji na poziomie strony.

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

Krok 2) Dodaj poniższy wiersz kodu, aby włączyć śledzenie stron. W deklaracji Page, wystarczy dołączyć wiersz Trace = "true". Ta linia kodu pozwoli na śledzenie na poziomie strony.

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

Teraz, gdy wyświetli się strona Demo.aspx, otrzymasz całą masę informacji o tej stronie. Na tej stronie są wyświetlane informacje, takie jak czas dla każdego aspektu cyklu życia strony.

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

W ASP.Net można wyświetlać użytkownikom niestandardowe strony błędów. Jeśli aplikacja zawiera jakiś błąd, strona niestandardowa wyświetli ten błąd użytkownikowi.

W naszym przykładzie najpierw dodamy stronę HTML. Ta strona wyświetli użytkownikowi komunikat „Przyglądamy się problemowi”. Następnie dodamy kod błędu do naszej strony demo.aspx, aby wyświetlić stronę błędu.

Postępujmy zgodnie z poniższymi krokami

Krok 1) Pracujmy nad naszą aplikacją DemoApplication. Dodajmy do aplikacji stronę HTML

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

Krok 2) W następnym kroku musimy podać nazwę nowej stronie HTML.

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

Krok 3) Strona błędu zostanie automatycznie otwarta w programie Visual Studio. Jeśli przejdziesz do Eksploratora rozwiązań, zobaczysz dodany plik.

Dodaj wiersz kodu „Przyglądamy się problemowi” do strony HTML. Nie musisz zamykać pliku HTML przed dokonaniem zmiany w pliku web.config.

We are looking into the problem

Krok 4) Teraz musisz dokonać zmiany w pliku web.config. Ta zmiana spowoduje powiadomienie, że za każdym razem, gdy wystąpi błąd w aplikacji, musi zostać wyświetlona niestandardowa strona błędu.

Tag „customErrors” umożliwia zdefiniowanie niestandardowej strony błędu. Właściwość defaultRedirect jest ustawiona na nazwę strony naszego błędu niestandardowego utworzonej w poprzednim kroku.

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ń

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

  • Te wiersze kodu są przeznaczone do odczytywania wierszy tekstu z pliku.
  • Plik powinien znajdować się na dysku D pod nazwą „Przykład.txt”.
  • Ale w naszej sytuacji ten plik tak naprawdę nie istnieje. Tak więc ten kod spowoduje błąd podczas uruchamiania aplikacji.

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 programie Visual Studio i powinieneś otrzymać poniższe dane wyjściowe.

Wynik:-

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

Nieobsługiwany wyjątek ASP.NET

Nawet w najlepszych scenariuszach mogą wystąpić błędy, których po prostu nie przewidziano.

Załóżmy, że użytkownik przejdzie do niewłaściwej strony w aplikacji. To jest coś, czego nie można przewidzieć. W takich przypadkach ASP.Net może przekierować użytkownika na stronę errorpage.html.

Zobaczmy na tym przykład.

  • Zamierzamy użyć tej samej aplikacji „DemoApplication”, która ma stronę Errorpage.html.
  • Spróbujemy wyświetlić stronę internetową, której nie ma w naszej aplikacji.
  • W takim przypadku powinniśmy zostać przekierowani na naszą stronę ErrorPage.html. Zobaczmy, jak to osiągnąć.

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

UWAGA : Plik global.asax.cs służy do dodawania kodu, który będzie obowiązywał 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 odpowiedniego wyświetlania strony ErrorPage.html.

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

Objaśnienie kodu: -

  1. Pierwsza linia to program obsługi zdarzeń Application_Error. To zdarzenie jest wywoływane za każdym razem, gdy w aplikacji wystąpi błąd. Zwróć uwagę, że nazwą zdarzenia musi być „Application_Error”. Parametry powinny być takie, jak pokazano powyżej.
  2. Następnie definiujemy obiekt typu klasy HttpException. Jest to standardowy obiekt, który zawiera 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 błędu ostatniego błędu to 404. (Kod błędu 404 to standardowy kod zwracany, gdy użytkownik przegląda stronę, która nie została znaleziona). Następnie przenosimy użytkownika na stronę ErrorPage.html, jeśli kod błędu jest zgodny.

Teraz uruchom kod w programie Visual Studio i powinieneś otrzymać poniższe dane wyjściowe

Wynik:-

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

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

Rejestrowanie błędów ASP.NET

Rejestrowanie błędów aplikacji pomaga programistom w późniejszym debugowaniu i usuwaniu błędów. ASP.Net ma możliwość rejestrowania błędów. Odbywa się to w pliku Global.asax.cs po przechwyceniu błędu. Podczas przechwytywania komunikat o błędzie można zapisać w pliku dziennika.

Zobaczmy na tym przykład.

  • Zamierzamy użyć tej samej aplikacji DemoApplication, która ma stronę Errorpage.html.
  • Spróbujemy wyświetlić stronę internetową, której nie ma w naszej aplikacji.
  • W takim przypadku powinniśmy zostać przekierowani na naszą stronę ErrorPage.html.
  • Jednocześnie zapiszemy komunikat o błędzie do pliku dziennika. Zobaczmy, jak to osiągnąć.

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

Krok 2) Dodaj poniższy wiersz kodu do pliku global.asax.cs. Sprawdza pod kątem błędów i odpowiednio wyświetla stronę ErrorPage.html. Jednocześnie będziemy rejestrować szczegóły błędu w pliku o nazwie „AllErrors.txt”. W naszym przykładzie napiszemy kod, aby ten plik został utworzony na dysku D.

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

Objaśnienie kodu: -

  1. Pierwsza linia polega na uzyskaniu samego błędu przy użyciu metody „Server.GetLastError”. Jest to następnie przypisywane do zmiennej „exc”.
  2. Następnie tworzymy pustą zmienną łańcuchową o nazwie „str”. Rzeczywisty komunikat o błędzie otrzymujemy za pomocą właściwości „exc.Message”. Właściwość exc.Message zawiera dokładny komunikat o każdym błędzie, który wystąpi podczas uruchamiania aplikacji. Jest to następnie przypisywane do zmiennej łańcuchowej.
  3. Następnie definiujemy plik o nazwie „AllErrrors.txt”. Tutaj będą wysyłane wszystkie komunikaty o błędach. Zapisujemy ciąg „str”, który zawiera wszystkie komunikaty o błędach do tego pliku.
  4. Na koniec przenosimy użytkownika do pliku ErrorPage.html.

Wynik:-

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

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

Komunikat o błędzie można następnie przesłać do programisty w późniejszym czasie w celu debugowania.

Podsumowanie

  • ASP.Net ma możliwość przeprowadzania debugowania i obsługi błędów.
  • Debugowanie można osiągnąć, dodając punkty przerwania do kodu. Następnie uruchamia opcję Rozpocznij z debugowaniem w programie Visual Studio, aby debugować kod.
  • Śledzenie to funkcja zapewniająca więcej informacji podczas uruchamiania aplikacji. Można to zrobić na poziomie aplikacji lub strony.
  • Na poziomie strony kod Trace = true należy dodać do dyrektywy page.
  • Na poziomie aplikacji tworzona jest dodatkowa strona o nazwie Trace.axd dla aplikacji. Zapewnia to wszystkie niezbędne informacje dotyczące śledzenia.