Truy tìm cấp độ trang Asp.Net, gỡ lỗi, xử lý lỗi (Ví dụ)

Mục lục:

Anonim

Trong bất kỳ ứng dụng nào, lỗi nhất định 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 việc này đối với 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.

Trong hướng dẫn này, bạn sẽ học-

  • Gỡ lỗi trong ASP.NET là gì?
  • Truy tìm trong ASP.NET là gì?
  • Theo dõi cấp độ trang
  • Xử lý lỗi: Hiển thị trang lỗi tùy chỉnh
  • ASP.NET không xử lý ngoại lệ
  • ASP.NET Lỗi ghi nhật ký

Gỡ lỗi trong ASP.NET là gì?

Gỡ lỗi là quá trình thêm các điểm ngắt vào một ứng dụng. Các điểm ngắt này được sử dụng để tạm dừng việc thực hiện một chương trình đang chạy. Điều này cho phép nhà phát triển hiểu những gì đang xảy ra trong một 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ị một 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 đó, chuỗi ký tự không được hiển thị. Để xác định vấn đề, chúng ta cần thêm một điểm ngắt. Chúng ta có thể thêm một điểm ngắt vào dòng mã hiển thị chuỗi. Điểm ngắt 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 những gì có thể xảy ra. Người lập trình chỉnh sửa chương trình cho phù hợp.

Trong ví dụ này, 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 các điểm ngắt vào ứng dụng.
  • Cách gỡ lỗi ứng dụng bằng điểm ngắt này.

Bước 1) Trước tiên, hãy đảm bảo rằng chúng ta đã mở ứng dụng web của mình trong Visual Studio. Đảm bảo DemoApplication đang mở trong Visual Studio.

Bước 2) Bây giờ 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" trong 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) Bây giờ chúng ta hãy thêm một điểm ngắt. Điểm ngắt là một điểm trong Visual Studio nơi bạn muốn dừng việc thực thi chương trình.

  1. Để thêm điểm ngắt, bạn cần nhấp vào cột mà bạn muốn chèn điểm ngắt. 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 chúng tôi 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.
  2. Khi điều này được thực hiện, bạn sẽ nhận thấy rằng mã được đánh dấu bằng màu đỏ. Ngoài ra, một bong bóng màu đỏ xuất hiện trong cột bên cạnh dòng mã.

Lưu ý: - Bạn có thể thêm nhiều điểm ngắt trong một ứng dụng

Bước 4) 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 Gỡ lỗi-> Bắt đầu gỡ lỗi.

Đầu ra: -

Khi bạn thực hiện tất cả các bước một cách chính xác, việc thực thi chương trình sẽ bị phá vỡ. Visual Studio sẽ đi đến điểm ngắt 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 rằng mã không chính xác, việc thực thi có thể bị dừng lại. Sau đó, mã có thể được sửa đổi cho phù hợp. Để tiếp tục chương trình, người lập trình cần bấm vào nút F5 trên bàn phím.

Truy tìm trong ASP.NET là gì?

Theo dõi ứng dụng cho phép người ta xem 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 là 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.

Hãy xem cách bật tính năng theo dõi cho một ứng dụng.

Bước 1) Hãy làm việc trên 'DemoApplication' của chúng tôi. Mở tệp web.config từ Trình khám phá Giải pháp.

Bước 2) Thêm dòng mã bên dưới vào tệp Web.config.

Câu lệnh theo dõi được sử dụng để cho phép truy tìm ứ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.

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 từng yêu cầu. Tại đây, bạn có thể xem có bất kỳ lỗi nào xảy ra trong một ứng dụng hay không. Các loại thông tin sau được hiển thị trên trang trên

  1. Thời gian của yêu cầu cho trang web.
  2. Tên của trang web được yêu cầu.
  3. 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).
  4. Xem chi tiết mà bạn cho phép để xem thêm chi tiết về yêu cầu web. Dưới đây là một ví dụ về điều này. 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

Theo dõi trang 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 rất 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 gì.

Visual Studio sẽ cung cấp thông tin chi tiết về các khía cạnh khác nhau của trang. Thông tin chẳng hạn 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 đang 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.

Hãy xem cách bật tính năng theo dõi cho một ứng dụng ở cấp độ trang.

Bước 1) Hãy làm việc trên DemoApplication của chúng tôi. Mở tệp demo.aspx từ Trình khám phá giải pháp

Bước 2) Thêm dòng mã bên dưới để kích hoạt tính năng dò tìm trang. Trong phần khai báo Trang, chỉ cần nối thêm dòng Trace = "true". Dòng mã này sẽ cho phép theo dõi mức độ trang.

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

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

Trong 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ị một chuỗi cho người dùng "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 của chúng tôi để 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

  1. Nhấp chuột phải vào DemoApplication trong Solution Explorer
  2. 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.

  1. Cung cấp tên là 'ErrorPage.'
  2. Nhấp vào nút 'OK' để tiếp tục.

Bước 3) Trang Lỗi sẽ tự động mở trong Visual Studio. Nếu bạn vào Trình khám phá giải pháp, 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.

We are looking into the problem

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 của trang lỗi tùy chỉnh của chúng tôi đã tạo ở bước trước.

Bước 5) Bây giờ hãy thêm một số mã bị 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ã dưới đây 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 được cho là nằm trong ổ đĩa D với tên 'Example.txt.'
  • Nhưng trong tình huống của chúng tôi, tệp này không thực sự tồn tại. Vì vậy đoạn mã này sẽ dẫn đến 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 kết quả bên dưới.

Đầu ra: -

Trang trên cho thấy rằng một lỗi đã được kích hoạt trong ứng dụng. Kết quả là trang Error.html được hiển thị cho người dùng.

ASP.NET không xử lý ngoại lệ

Ngay cả trong các tình huống tốt nhất, vẫn có thể xảy ra các trường hợp lỗi không phải do forseen.

Giả sử nếu người dùng duyệt đến nhầm trang trong ứng dụng. Đây là điều không thể nói 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 của chúng tôi 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ừ Trình khám phá giải pháp

LƯU Ý : Tệp global.asax.cs được sử dụng để thêm mã sẽ có thể á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ã: -

  1. 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.
  2. Tiếp theo, chúng ta định nghĩa một đối tượng của kiểu lớp HttpException. Đây là một đối tượng tiêu chuẩn sẽ chứa tất cả các chi tiết của lỗi. Sau đó, chúng tôi sử dụng phương thức Server.GetLastError để lấy tất cả chi tiết về lỗi cuối cùng xảy ra trong ứng dụng.
  3. 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. (Mã lỗi 404 là mã chuẩn được trả về khi người dùng duyệt đến một trang mà 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 kết quả bên dưới.

Trang trên cho thấy rằng một lỗi đã được kích hoạt trong ứng dụng. Kết quả là trang Error.html được hiển thị cho người dùng.

ASP.NET Lỗi ghi nhật ký

Bằng cách ghi lại các lỗi ứng dụng, nó sẽ giúp nhà phát triển gỡ lỗi và giải quyết lỗi sau đó. ASP.Net có cơ sở để 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 chụp, 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 Ứng dụng thử nghiệm 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 của chúng tôi trong trường hợp này.
  • Và đồng thời, chúng tôi sẽ ghi thông báo lỗi vào một tệp nhật ký. 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ừ Trình khám phá giải pháp

Bước 2) Thêm dòng mã dưới đây 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 tôi sẽ ghi lại chi tiết lỗi trong một tệp có tên là 'AllErrors.txt.' Đối với ví dụ của chúng tôi, chúng tôi 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ã: -

  1. 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'.
  2. Sau đó, chúng tôi tạo một biến chuỗi rỗng có tên là 'str'. Chúng tôi nhận được thông báo lỗi thực sự bằng cách sử dụng thuộc tính 'exc.Message'. Thuộc tính exc.Message sẽ có thông báo chính xác cho 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.
  3. Tiếp theo, chúng tôi xác định tệp có tên 'AllErrrors.txt.' Đây là nơi tất cả các thông báo lỗi sẽ được gửi đi. Chúng tôi viết chuỗi 'str' chứa tất cả các thông báo lỗi cho tệp này.
  4. 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 kết quả bên dưới.

Và đồng thời, nếu bạn mở tệp 'AllErrors.txt', bạn sẽ thấy thông tin bên dưới.

Thông báo lỗi sau đó có thể được chuyển cho nhà phát triển vào thời điểm sau đó cho mục đích gỡ lỗi.

Tóm lược

  • ASP.Net có cơ sở để thực hiện gỡ lỗi và xử lý lỗi.
  • Gỡ lỗi có thể đạt được bằng cách thêm các điểm ngắt vào mã. Sau đó, một người chạy tùy chọn Bắt đầu với 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.