Theo dõi, gỡ lỗi, xử lý lỗi ở cấp độ trang Asp.Net [Ví dụ]
Trong bất kỳ ứng dụng nào, lỗi chắc chắn sẽ xảy ra trong quá trình phát triển. Điều quan trọng là có thể phát hiện ra lỗi ở giai đoạn đầu.
Trong Visual Studio, có thể thực hiện điều này cho các ứng dụng ASP.Net. Visual Studio được sử dụng để gỡ lỗi và có các kỹ thuật xử lý lỗi cho ASP.Net.
Gỡ lỗi trong ASP.NET là gì?
Gỡ lỗi là quá trình thêm điểm dừng vào ứng dụng. Những điểm dừng này được sử dụng để tạm dừng việc thực thi một chương trình đang chạy. Điều này cho phép nhà phát triển hiểu được điều gì đang xảy ra trong chương trình tại một thời điểm cụ thể.
Hãy lấy một ví dụ về một chương trình. Chương trình hiển thị chuỗi “Chúng tôi đang gỡ lỗi” cho người dùng. Giả sử khi chúng ta chạy ứng dụng, vì một lý do nào đó mà string không được hiển thị. Để xác định vấn đề, chúng ta cần thêm một điểm dừng. Chúng ta có thể thêm điểm ngắt vào dòng mã hiển thị chuỗi. Điểm dừng này sẽ tạm dừng việc thực hiện chương trình. Tại thời điểm này, lập trình viên có thể thấy điều gì có thể xảy ra. Lập trình viên sẽ chỉnh sửa chương trình cho phù hợp.
Ở đây trong ví dụ, chúng ta sẽ sử dụng 'DemoApplication' đã được tạo trong các chương trước. Trong ví dụ sau, chúng ta sẽ thấy
- Cách làm cho ứng dụng demo hiển thị một chuỗi.
- Cách thêm điểm ngắt vào ứng dụng.
- Cách gỡ lỗi ứng dụng bằng điểm dừng này.
Cách gỡ lỗi ứng dụng trong ASP.NET
Dưới đây là các bước để tạo một ứng dụng demo, thêm điểm dừng và gỡ lỗi trong ASP.Net:
Bước 1) Mở ứng dụng trong Visual Studio
Trước tiên, hãy đảm bảo rằng ứng dụng web của chúng ta đang mở trong Visual Studio. Đảm bảo rằng DemoApplication đang mở trong Visual Studio.
Bước 2) Bây giờ hãy mở tệp Demo.aspx.cs và thêm dòng mã bên dưới.
- Chúng tôi chỉ thêm dòng mã Response.Write để hiển thị một chuỗi.
- Vì vậy, khi ứng dụng thực thi, nó sẽ hiển thị chuỗi “Chúng tôi đang gỡ lỗi” trên trình duyệt web.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
Bước 3) Thêm điểm dừng vào ứng dụng
Điểm dừng là điểm trong Visual Studio mà bạn muốn dừng thực thi chương trình.
- Để thêm điểm dừng, bạn cần nhấp vào cột nơi bạn muốn chèn điểm dừng. Vì vậy, trong trường hợp của chúng tôi, chúng tôi muốn chương trình của mình dừng lại ở dòng mã “Response.Write”. Bạn không cần thêm bất kỳ lệnh nào để thêm điểm ngắt. Bạn chỉ cần nhấp vào dòng mà bạn muốn thêm điểm ngắt.
- Khi việc này hoàn tất, bạn sẽ nhận thấy mã được đánh dấu màu đỏ. Ngoài ra, một bong bóng màu đỏ sẽ xuất hiện ở cột bên cạnh dòng mã.
Chú thích: - Bạn có thể thêm nhiều điểm dừng trong một ứng dụng
Bước 4) Chạy ứng dụng ở chế độ Gỡ lỗi
Bây giờ bạn cần chạy ứng dụng của mình bằng Chế độ gỡ lỗi. Trong Visual Studio, chọn tùy chọn menu Debug->Start Debugging.
Đầu ra: -
Khi bạn thực hiện đúng tất cả các bước, chương trình sẽ dừng lại. Visual Studio sẽ đến điểm dừng và đánh dấu dòng mã bằng màu vàng.
Bây giờ, nếu lập trình viên cảm thấy mã không chính xác thì việc thực thi có thể bị dừng. Mã sau đó có thể được sửa đổi cho phù hợp. Để tiếp tục thực hiện chương trình, người lập trình cần nhấn nút F5 trên bàn phím.
Truy tìm trong ASP.NET là gì?
Việc theo dõi ứng dụng cho phép người ta xem liệu có bất kỳ trang nào được yêu cầu dẫn đến lỗi hay không. Khi tính năng theo dõi được bật, một trang bổ sung có tên trace.axd sẽ được thêm vào ứng dụng. (Xem hình ảnh bên dưới). Trang này được đính kèm với ứng dụng. Trang này sẽ hiển thị tất cả các yêu cầu và trạng thái của chúng.
Cách bật tính năng theo dõi ứng dụng trong ASP.NET
Hãy xem cách bật tính năng theo dõi cho một Ứng dụng ASP.Net:
Bước 1) Hãy bắt tay vào 'Ứng dụng Demo' của chúng ta. Mở tệp web.config từ Solution Explorer.
Bước 2) Thêm dòng mã dưới đây vào tệp Web.config.
Câu lệnh theo dõi được sử dụng để cho phép theo dõi ứng dụng.
- 'requestLimit' trong câu lệnh theo dõi được sử dụng. Nó chỉ định số lượng yêu cầu trang phải được theo dõi.
- Trong ví dụ của chúng tôi, chúng tôi đưa ra giới hạn là 40. Chúng tôi đưa ra giới hạn vì giá trị cao hơn sẽ làm giảm hiệu suất của ứng dụng.
<?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>
Chạy “demoapplication” trong Visual Studio.
Đầu ra: -
Nếu bây giờ bạn duyệt đến URL – http://localhost:53003/trace.axd , bạn sẽ thấy thông tin cho mỗi yêu cầu. Tại đây bạn có thể xem có lỗi nào xảy ra trong ứng dụng không. Các loại thông tin sau được hiển thị trên trang trên
- Thời điểm yêu cầu trang web.
- Tên của trang web được yêu cầu.
- Mã trạng thái của yêu cầu web. (mã trạng thái 200 nghĩa là yêu cầu thành công).
- View details cho phép bạn xem thêm chi tiết về yêu cầu web. Ví dụ về điều này được hiển thị bên dưới. Một thông tin chi tiết quan trọng được cung cấp là thông tin tiêu đề. Thông tin này cho biết thông tin được gửi trong tiêu đề của mỗi yêu cầu web là gì.
Theo dõi cấp độ trang trong ASP.NET
Theo dõi cấp độ trang trong ASP.Net hiển thị tất cả thông tin chung về một trang web khi nó đang được xử lý. Điều này hữu ích trong việc gỡ lỗi nếu một trang không hoạt động vì bất kỳ lý do nào. Visual Studio cung cấp thông tin chi tiết về nhiều khía cạnh khác nhau của trang và thông tin như thời gian cho mỗi phương thức được gọi trong yêu cầu web.
Ví dụ, nếu ứng dụng web của bạn gặp sự cố về hiệu suất, thông tin này có thể giúp gỡ lỗi sự cố. Thông tin này được hiển thị khi ứng dụng chạy trong Visual Studio.
Cách bật tính năng theo dõi ở cấp Trang trong ASP.NET
Hãy xem cách bật theo dõi cấp độ trang cho ứng dụng ASP.Net:
Bước 1) Hãy làm việc trên DemoApplication của chúng tôi. Mở tệp demo.aspx từ Solution Explorer
Bước 2) Thêm dòng mã bên dưới để bật theo dõi trang. Trong phần khai báo Trang, chỉ cần thêm dòng Trace=”true”. Dòng mã này sẽ cho phép theo dõi cấp độ trang.
<%@ 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>
Chạy ứng dụng trong Visual Studio.
Đầu ra: -
Bây giờ khi trang web Demo.aspx được hiển thị, bạn sẽ nhận được rất nhiều thông tin về trang. Thông tin như thời gian cho từng khía cạnh của vòng đời trang được hiển thị trên trang này.
Xử lý lỗi: Hiển thị trang lỗi tùy chỉnh
In ASP.Net, bạn có thể hiển thị các trang lỗi tùy chỉnh cho người dùng. Nếu một ứng dụng có bất kỳ loại lỗi nào, một trang tùy chỉnh sẽ hiển thị lỗi này cho người dùng.
Trong ví dụ của chúng tôi, trước tiên chúng tôi sẽ thêm một trang HTML. Trang này sẽ hiển thị cho người dùng một chuỗi “Chúng tôi đang xem xét vấn đề”. Sau đó, chúng tôi sẽ thêm một số mã lỗi vào trang demo.aspx để trang lỗi được hiển thị.
Hãy làm theo các bước được đề cập dưới đây
Bước 1) Hãy làm việc trên DemoApplication của chúng tôi. Hãy thêm một trang HTML vào ứng dụng
- Nhấp chuột phải vào DemoApplication trong Solution Explorer
- Chọn tùy chọn menu 'Thêm'->Trang HTML
Bước 2) Trong bước tiếp theo, chúng ta cần cung cấp tên cho trang HTML mới.
- Cung cấp tên là 'ErrorPage.'
- Nhấp vào nút 'OK' để tiếp tục.
Bước 3) Errorpage sẽ tự động mở trong Visual Studio. Nếu bạn vào Solution Explorer, bạn sẽ thấy tệp đã được thêm vào.
Thêm dòng mã “Chúng tôi đang xem xét vấn đề” vào trang HTML. Bạn không cần phải đóng tệp HTML trước khi thực hiện thay đổi đối với tệp web.config.
<!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>
Bước 4) Bây giờ bạn cần thực hiện thay đổi trong tệp web.config. Thay đổi này sẽ thông báo rằng bất cứ khi nào xảy ra lỗi trong ứng dụng, trang lỗi tùy chỉnh cần được hiển thị.
Thẻ 'customErrors' cho phép xác định trang lỗi tùy chỉnh. Thuộc tính defaultRedirect được đặt thành tên trang lỗi tùy chỉnh của chúng tôi đã tạo ở bước trước.
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <customErrors mode="On" defaultRedirect="ErrorPage.html"> </customErrors> </system.web> </configuration>
Bước 5) Bây giờ chúng ta hãy thêm một số mã lỗi vào trang demo.aspx.cs. Mở trang này bằng cách nhấp đúp vào tệp trong Solution Explorer
Thêm mã bên dưới vào tệp Demo.aspx.cs.
- Những dòng mã này được thiết kế để đọc các dòng văn bản từ một tệp.
- Tệp này được cho là nằm trong ổ D có tên 'Example.txt.'
- Nhưng trong trường hợp của chúng tôi, tập tin này không thực sự tồn tại. Vì vậy đoạn code này sẽ gây ra lỗi khi ứng dụng chạy.
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); } } }
Bây giờ thực thi mã trong Visual Studio và bạn sẽ nhận được đầu ra dưới đây.
Đầu ra: -
Trang trên cho thấy đã xảy ra lỗi trong ứng dụng. Kết quả trang Error.html hiển thị cho người dùng.
Ngoại lệ chưa được xử lý của ASP.NET
Ngay cả trong những tình huống tốt nhất, vẫn có thể xảy ra những trường hợp sai sót không thể lường trước được.
Giả sử nếu người dùng duyệt đến trang sai trong ứng dụng. Đây là điều không thể đoán trước được. Trong những trường hợp như vậy, ASP.Net có thể chuyển hướng người dùng đến errorpage.html.
Hãy xem một ví dụ về điều này.
- Chúng tôi sẽ sử dụng cùng một 'DemoApplication' có Errorpage.html.
- Và chúng tôi sẽ cố gắng xem một trang web không tồn tại trong ứng dụng của chúng tôi.
- Chúng tôi sẽ được chuyển hướng đến trang ErrorPage.html trong trường hợp này. Hãy xem các bước để đạt được điều này.
Bước 1) Hãy làm việc trên DemoApplication của chúng tôi. Mở tệp Global.asax.cs từ Solution Explorer
LƯU Ý: Tệp Global.asax.cs được sử dụng để thêm mã sẽ được áp dụng trên tất cả các trang trong ứng dụng.
Bước 2) Thêm dòng mã dưới đây vào Global.asax.cs. Những dòng này sẽ được sử dụng để kiểm tra lỗi và hiển thị trang ErrorPage.html tương ứng.
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"); } } }
Giải thích mã: -
- Dòng đầu tiên là trình xử lý sự kiện Application_Error. Sự kiện này được gọi bất cứ khi nào có lỗi xảy ra trong một ứng dụng. Lưu ý rằng tên sự kiện phải là 'Application_Error'. Và các thông số phải như hình trên.
- Tiếp theo, chúng ta định nghĩa một đối tượng thuộc loại lớp HttpException. Đây là một đối tượng chuẩn sẽ lưu giữ tất cả các chi tiết về lỗi. Sau đó, chúng ta sử dụng phương thức Server.GetLastError để lấy tất cả các chi tiết về lỗi cuối cùng xảy ra trong ứng dụng.
- Sau đó, chúng tôi kiểm tra xem mã lỗi của lỗi cuối cùng có phải là 404 hay không. (Mã lỗi 404 là mã tiêu chuẩn được trả về khi người dùng duyệt đến một trang không tìm thấy). Sau đó, chúng tôi chuyển người dùng đến trang ErrorPage.html nếu mã lỗi khớp.
Bây giờ hãy chạy mã trong Visual Studio và bạn sẽ nhận được kết quả bên dưới
Đầu ra: -
Duyệt trang http://localhost:53003/Demo1.aspx . Hãy nhớ rằng Demo1.aspx không tồn tại trong ứng dụng của chúng tôi. Sau đó bạn sẽ nhận được đầu ra dưới đây.
Trang trên cho thấy đã xảy ra lỗi trong ứng dụng. Kết quả trang Error.html hiển thị cho người dùng.
Ghi nhật ký lỗi ASP.NET
Bằng cách ghi lại lỗi ứng dụng, nó giúp nhà phát triển gỡ lỗi và giải quyết lỗi tại thời điểm sau. ASP.Net có chức năng ghi lại lỗi. Điều này được thực hiện trong tệp Global.asax.cs khi lỗi được ghi lại. Trong quá trình ghi lại, thông báo lỗi có thể được ghi vào tệp nhật ký.
Hãy xem một ví dụ về điều này.
- Chúng tôi sẽ sử dụng cùng một DemoApplication có Errorpage.html.
- Và chúng tôi sẽ cố gắng xem một trang web không tồn tại trong ứng dụng của chúng tôi.
- Chúng tôi sẽ được chuyển hướng đến trang ErrorPage.html trong trường hợp này.
- Và đồng thời, chúng ta sẽ ghi thông báo lỗi vào file log. Hãy xem các bước để đạt được điều này.
Bước 1) Hãy làm việc trên DemoApplication của chúng tôi. Mở tệp Global.asax.cs từ Solution Explorer
Bước 2) Thêm dòng mã bên dưới vào global.asax.cs. Nó sẽ kiểm tra lỗi và hiển thị trang ErrorPage.html tương ứng. Đồng thời, chúng ta sẽ ghi lại chi tiết lỗi trong tệp có tên 'AllErrors.txt'. Đối với ví dụ của chúng ta, chúng ta sẽ viết mã để tạo tệp này trên ổ 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"); } } }
Giải thích mã: -
- Dòng đầu tiên là tự nhận lỗi bằng cách sử dụng phương thức 'Server.GetLastError'. Sau đó, giá trị này được gán cho biến 'exc'.
- Sau đó chúng tôi tạo một biến chuỗi trống có tên là 'str'. Chúng tôi nhận được thông báo lỗi thực tế bằng thuộc tính 'exc.Message'. Thuộc tính ex.Message sẽ có thông báo chính xác về bất kỳ lỗi nào xảy ra khi chạy ứng dụng. Điều này sau đó được gán cho biến chuỗi.
- Tiếp theo, chúng tôi xác định tệp có tên 'AllErrors.txt.' Đây là nơi tất cả các thông báo lỗi sẽ được gửi. Chúng tôi viết chuỗi 'str' chứa tất cả các thông báo lỗi vào tệp này.
- Cuối cùng, chúng tôi chuyển người dùng sang tệp ErrorPage.html.
Đầu ra: -
Duyệt trang http://localhost:53003/Demo1.aspx . Hãy nhớ rằng Demo1.aspx không tồn tại trong ứng dụng của chúng tôi. Sau đó bạn sẽ nhận được đầu ra dưới đây.
Và đồng thời, nếu mở file “AllErrors.txt” bạn sẽ thấy thông tin bên dưới.
Sau đó, thông báo lỗi có thể được chuyển cho nhà phát triển để gỡ lỗi.
Tổng kết
- ASP.Net có cơ sở để thực hiện gỡ lỗi và xử lý lỗi.
- Có thể gỡ lỗi bằng cách thêm điểm dừng vào mã. Sau đó, chạy tùy chọn Bắt đầu bằng Gỡ lỗi trong Visual Studio để gỡ lỗi mã.
- Truy tìm là cơ sở để cung cấp thêm thông tin trong khi chạy ứng dụng. Điều này có thể được thực hiện ở cấp độ ứng dụng hoặc trang.
- Ở cấp độ trang, mã Trace=true cần được thêm vào chỉ thị trang.
- Ở cấp độ ứng dụng, một trang bổ sung có tên Trace.axd được tạo cho ứng dụng. Điều này cung cấp tất cả các thông tin truy tìm cần thiết.