2009-02-12 24 views
45

Tôi có một số mã từ VB.NET 1.1 ngày của mình cho phép tôi tự động kiểm tra xem Debug đã được bật trong web.config chưa. Tôi đã tìm ra lý do tại sao tái phát minh ra bánh xe khi bật/tắt ghi nhật ký nếu tôi chỉ có thể yêu cầu quản trị viên web bật gỡ lỗi. Đây là mã tôi đã sử dụng trong VB.NET mà chỉ làm việc tốt:Làm cách nào để kiểm tra xem Debug có được bật trong web.config

ConfigurationSettings.GetConfig("system.web/compilation").Debug.ToString() 

Khi tôi muốn chuyển đổi sang C# và sử dụng nó trong .NET 3.5. Tôi gặp rắc rối và nó sẽ không hoạt động. Ngoài ra, tôi muốn sử dụng cấu trúc mới hơn của ConfigurationManager.GetSection. Bất cứ ai có thể gợi ý cách tốt nhất để đọc giá trị system.web/compilation/debug=true|false?

Được đánh giá cao!

Trả lời

104

Sử dụng:

HttpContext.Current.IsDebuggingEnabled 

Khách sạn này thực sự nhìn vào các thiết lập cấu hình web.config. Nếu bạn nhìn vào nó bằng cách sử dụng Reflector bạn sẽ thấy rằng nó nhận được đối tượng ConfigurationSection thực tế bằng cách sử dụng một số lớp bên trong.

+2

Tuyệt vời! Đây là cách tốt hơn để kiểm tra gỡ lỗi hơn đọc trực tiếp web.config ... Một điều đáng nói, tôi đã tìm thấy một bài báo cho biết phương pháp này sẽ không tính đến nếu gỡ lỗi được đặt ở cấp trang. http://petesbloggerama.blogspot.com/2007/01/is-debug-mode-evil.html – Dscoduc

9

sau đây nên làm việc

var cfg=(System.Web.Configuration.CompilationSection) ConfigurationManager.GetSection("system.web/compilation"); 
if (cfg.Debug) 
{ 
... 
} 
+0

Tuyệt vời, cảm ơn bạn. – Dscoduc

+1

Đó là một cách khá phức tạp và dễ bị lỗi để có được ở đó. Nên sử dụng câu trả lời @driis. –

+0

Tôi đồng ý với Byte, đó là lý do tại sao tôi đã +1 câu trả lời của mình .... – JoshBerke

5

-Edit- Tôi biết điều này không đặc biệt trả lời các câu hỏi, như bạn yêu cầu Web.Config - mà ngay lập tức cho thấy một web.app, và là không được quyết định tại "thời gian chạy", nhưng nó cho phép một cách tốt để kiểm tra xem đó là chế độ gỡ lỗi hay không.

Ngày lưu ý khác, bạn sẽ không lý tưởng đổi chổ lẫn nhau giữa debug và chế độ phát hành trên cùng một ứng dụng .. -end Edit-

Làm thế nào về việc sử dụng biên soạn có điều kiện ??

http://msdn.microsoft.com/en-us/library/aa691099(v=vs.71).aspx

bool isDebuggingEnabled = false 

#if debug 
    isDebuggingEnabled = true; 
#endif 

Đó chắc chắn sẽ làm cho ý nghĩa nhất, và không đòi hỏi bất kỳ tài liệu tham khảo cụ thể?

Chỉ cần chắc chắn rằng các DEBUG liên tục được bật trong dự án của bạn (Xem hình)

enter image description here

+0

Tôi thích giải pháp này cho những trường hợp không có ngữ cảnh http. Tôi sử dụng nó để thiết lập tối ưu hóa bó. –

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