87

Sự khác nhau giữa WebConfigurationManager và ConfigurationManager là gì?Sự khác nhau giữa WebConfigurationManager và ConfigurationManager là gì?

Khi nào tôi nên sử dụng cái kia?

CẬP NHẬT

Tôi chỉ nhìn vào WebConfigurationManager, và đối với một số lý do, bạn không thể truy cập vào chuỗi kết nối như bạn làm trong ConfigurationManager (như một mảng). Bất cứ ai có thể cho tôi biết lý do tại sao MS làm cho nó như thế này? Nó có vẻ là một nỗi đau để có được chuỗi kết nối bạn cần bằng cách sử dụng WebConfigurationManager.

CẬP NHẬT VỚI CAVEAT!

Nếu bạn không có tham chiếu đến không gian tên "System.Configuration" được thêm vào dự án của bạn, thì Visual Studio sẽ hiển thị lỗi khi bạn thử và truy cập WebConfigurationManager.ConnectionStrings giống như một mảng!

+1

Tôi không nghĩ rằng 'báo trước' là rất chính xác. Tôi sử dụng system.web.configuration cho chuỗi kết nối mà không cần system.configuration – sclarson

Trả lời

83

WebConfiguratonManger biết cách xử lý sự kế thừa cấu hình trong ứng dụng web. Như bạn đã biết, có thể có một số tệp web.config trong một ứng dụng - một trong thư mục gốc của trang web và bất kỳ số nào trong các thư mục con. Bạn có thể chuyển đường dẫn đến phương thức GetSection() để có được cấu hình ghi đè có thể.

Nếu chúng ta muốn looke tại WebConfigurationManager với Reflector sau đó mọi chuyện đã rõ ràng:

public static object GetSection(string sectionName) 
{ 
    ... 
    return ConfigurationManager.GetSection(sectionName); 
} 

public static object GetSection(string sectionName, string path) 
{ 
    ... 
    return HttpConfigurationSystem.GetSection(sectionName, path); 
} 
23

WebConfigurationManager được tạo riêng cho các ứng dụng ASP.NET.

WebConfigurationManager cung cấp các phương thức bổ sung để tải các tệp cấu hình áp dụng cho các ứng dụng Web.

ConfigurationManager cũng cung cấp các phương pháp để tải các tệp cấu hình áp dụng cho các ứng dụng ".exe".

Tôi khuyên bạn nên xem WebConfigurationManager và xem nó có cung cấp cho bạn bất cứ thứ gì bạn không thể thực hiện với ConfigurationManager và sử dụng nó hay không, nếu không sử dụng ConfigurationManager sẽ làm cho mã của bạn được sử dụng liền mạch giữa web và aps trên máy tính để bàn.

3

Không chắc chắn những gì bạn có ý nghĩa về chuỗi kết nối.

Gọi WebConfigurationManager.ConnectionStrings trả về System.Configuration.ConnectionStringSettingsCollection, giống như bạn sẽ nhận được nếu bạn gọi là ConfigurationManager.ConnectionStrings.

Nếu không, như XOR nói, nó được thiết kế để xử lý nhiều cấu hình web.configs, kết hợp chúng theo yêu cầu khi bạn di chuyển xung quanh các thư mục trong một ứng dụng.

4

Mặc dù WebConfigurationManager nằm trong hội đồng System.Web ConnectionStringSettingsCollection mà nó trả về nằm trong System.Configuration.

Nếu bạn đang nhận được lỗi

Không thể áp dụng lập chỉ mục với [] để một biểu hiện của loại 'System.Configuration.ConnectionStringSettingsCollection'

trong khi cố gắng truy cập vào các chỉ số mảng ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString 

chắc chắn rằng bạn có một tài liệu tham khảo để lắp ráp System.Configuration

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