2010-01-14 36 views
11

Tôi đang cố gắng gỡ lỗi một số mã bằng cách sử dụng Response.Write, nhưng khi tôi chạy mã, nó bỏ qua tuyên bố đó và lỗi tại một số điểm tiếp theo trong mã.Gỡ lỗi với Response.Write trong ASP cổ điển

Làm cách nào để nhận được báo cáo Response.Write của mình để hiển thị mà không có các lỗi khác sắp xảy ra?

Trả lời

11

Tôi thường xuyên sử dụng Response.End khi tôi phải xem trạng thái ở một vị trí nhất định trên trang.

2

Bạn sẽ phải sử dụng câu lệnh "về lỗi tiếp tục" tiếp theo ở đầu trang ASP của mình. Điều này sẽ giải quyết vấn đề của bạn khi xảy ra lỗi, nó sẽ chuyển sang dòng kế tiếp thay vì ném một lỗi.

Bạn có thể kiểm tra liên kết này http://www.powerasp.com/content/new/on-error-resume-next.asp để tham khảo.

Mã hóa hạnh phúc

+0

đừng quên đóng khối lỗi đó bằng "lỗi trên goto 0" ở cuối –

+0

Tôi không nghĩ "về lỗi goto 0" hoạt động trong asp cổ điển (ít nhất đó là những gì tôi đã trải qua một lần. – Edelcom

+0

@Edelcom: "Về lỗi goto tiếp theo" và "Về lỗi goto 0" là hai chỉ "lỗi" hoạt động mà làm việc trong VBScript – AnthonyWJones

3

Nhận xét dòng cung cấp lỗi và xem respnse.write hiển thị là điều duy nhất hợp lý.

Không sử dụng on error resume next trong khi bạn đang phát triển các trang của mình. Bạn phải chắc chắn rằng bạn xây dựng các trang của bạn một cách chính xác và rằng bạn đang sản xuất mã chính xác. Bạn sẽ không thấy bất kỳ lỗi nào nếu bạn sử dụng on error resume next.

on error resume next chỉ nên được sử dụng, theo ý kiến ​​của tôi, trong hành động của cơ sở dữ liệu và trong mã được phân phối (không phát triển). Trong trường hợp đó, bạn nên sử dụng các cấu trúc

if Err.Number <> 0 then 

để kiểm tra bất kỳ lỗi nào. Bạn chỉ đơn giản là không thể làm điều đó sau mỗi dòng trong asp nếu bạn đã đặt câu lệnh on error resume next ở đầu mã của bạn, nhưng nó chắc chắn làm cho sence trong mã xử lý cơ sở dữ liệu.

10

Chúng tôi sử dụng Visual Studio 2008 để gỡ lỗi các trang asp cổ điển. Bạn có thể đính kèm vào quá trình IIS và "bước qua" trang. Nó rất ngọt ngào. Dưới đây là các bước:

  1. Lấy phiên bản ASP mới nhất từ ​​điều khiển nguồn.

  2. Cài đặt IIS (nếu chưa có). FYI ... Tôi đang sử dụng IIS 5.1.

  3. Tạo thư mục ảo có tên "classicDebug" trỏ đến thư mục cục bộ của bạn (C: \ Websites \ ClassicWebSite).

  4. Xem các thuộc tính thư mục ảo, tab Thư mục ảo.

  5. Bật hộp kiểm "Truy cập nguồn tập lệnh".

  6. Nút cấu hình, tab Tùy chọn - kiểm tra mọi thứ.

  7. Tab gỡ lỗi - kiểm tra mọi thứ.

    7a. Trong tab ASP.NET, chọn 2.x

  8. tải lên (không chạy hoặc gỡ lỗi hoặc F5) các trang web trong VS.NET 2008.

  9. Sửa global.asa bạn cho phù hợp (nguồn dữ liệu, và đường dẫn).

  10. Tìm trang .asp bạn muốn "xem qua" và đặt điểm ngắt ở đầu (hoặc ở đâu đó).

  11. Mở IE và điều hướng đến trang của bạn.

  12. Quay trở lại VS.NET và chọn Debug -> Đính kèm để trình

  13. Kiểm tra "trình diễn from all users" và chọn tiến trình. Đối với tôi (IIS 5.1), tên quá trình là dllhost.exe đang chạy với tài khoản IWAM_COMPUTERNAME w/type "Script, T-SQL, Managed, x86".

  14. Truy cập trang của bạn bằng IE ... VS.NET sẽ bị hỏng.

+0

cảm ơn cho từng bước làm việc đó với vs 2008.Tôi hiện đang sử dụng nhà phát triển web trực quan và không cho phép quy trình đính kèm – chobo

0

Điều này có thể giúp thay thế cho response.write.

Tôi đặt cùng ASP này bao gồm lớp hoạt động với Firebug + FirePHP. Nó cho phép bạn ghi các giá trị (bao gồm các chuỗi, các mảng đa chiều và thậm chí cả các đối tượng được tạo bằng json.asp) vào bảng điều khiển firebug và xem các đối tượng bộ sưu tập tích hợp của ASP có thể giúp (đặc biệt là với Ajax, nơi bạn không thể xuất dữ liệu gỡ lỗi) phá vỡ các phản ứng json.) Ajax thời gian tải kịch bản và lỗi được tự động đăng nhập để xem nhanh.

https://github.com/dmeagor/ClassicASP-FirePHP

Chỉ cần bao gồm các tập tin và sử dụng log (somevalue) để gửi các biến định dạng để bảng điều khiển firebug.

Phát hành theo giấy phép mã nguồn mở MIT

0

Nói về lựa chọn thay thế, từ David Meagor bưu điện, bạn cũng có thể viết dấu vết vào một tập tin. Dưới đây là ví dụ về cách ghi vào tệp: http://www.4guysfromrolla.com/webtech/040699-1.shtml

Nếu bạn muốn, bạn thậm chí có thể đặt trình theo dõi con trong tệp bao gồm và sử dụng nó trong tất cả các trang của bạn khi bạn cần.

Một giải pháp khác mà chúng tôi đang sử dụng là đặt các phương pháp truy tìm trong một hội đồng .Net, đăng ký nó dưới dạng COM rồi gọi nó bằng cách sử dụng CreateObject.

Các tùy chọn này sẽ cho phép bạn giữ lại dấu vết trong tệp mà bạn có thể xem lại sau và chia sẻ với các nhà phát triển khác.

Cá nhân tôi sử dụng kết hợp các phương pháp này: tôi xem lại tệp nhật ký, sử dụng điểm ngắt và thậm chí là thỉnh thoảng có một Response.Write.

Một điều khác: kích hoạt và xem lại nhật ký IIS: chúng sẽ thường cho bạn biết những gì trang của bạn đã bị phá vỡ. Bạn có thể đọc tại đây cách bật hoặc tắt nhật ký cho ASP cổ điển: https://technet.microsoft.com/en-us/library/hh831387.aspx.

Các vấn đề liên quan