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


102

Sự khác biệt giữa cái WebConfigurationManagervà cái là ConfigurationManagergì?

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

ĐÃ CẬP NHẬT

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

CẬP NHẬT LẠI với CAVEAT!

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


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 các chuỗi kết nối mà không cần system.configuration
sclarson

Câu trả lời:


95

WebConfigurationManger biết cách xử lý việc 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 bị ghi đè.

Nếu chúng ta đăng nhập WebConfigurationManager bằng Reflector thì mọi thứ 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);
}

25

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

WebConfigurationManager cung cấp các phương pháp 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 qua WebConfigurationManager và xem liệu nó có cung cấp cho bạn bất cứ điều gì bạn không thể làm với ConfigurationManager hay không và sử dụng nó thay thế, nếu không, sử dụng ConfigurationManager sẽ giúp mã của bạn được sử dụng liền mạch giữa web và máy tính để bàn dễ dàng hơn nhiều.


4

Mặc dù WebConfigurationManager nằm trong cụm System.Web nhưng ConnectionStringSettingsCollection mà nó trả về lại nằm trong System.Configuration.

Nếu bạn đang gặp lỗi

Không thể áp dụng lập chỉ mục với [] cho biểu thức kiểu 'System.Configuration.ConnectionStringSettingsCollection'

trong khi cố gắng truy cập chỉ mục mảng ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

đảm bảo rằng bạn có tham chiếu đến assembly System.Configuration


3

Không chắc ý của bạn về các chuỗi kết nối.

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

Mặt khác, như XOR nói, nó được thiết kế để xử lý nhiều web.configs phân cấp, 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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.