2009-08-25 24 views
5

Tại sao có một phần khác được gọi là connectionStrings? Tôi đã luôn sử dụng appSettings, cho đến khi tôi nhận thấy điều này trong một dự án mới:Sự khác nhau giữa appSettings và connectionStrings trong tệp Web.config là gì?

<appSettings> 
<add key="SqlConnString" value="server=ABC;database=ABC;uid=A;pwd=B;"/> 
</appSettings> 

<connectionStrings>  
</connectionStrings> 

Có sự khác biệt nào không? Bất kỳ lý do tại sao tôi nên sử dụng một trong những khác?

Trả lời

9

Từ documentation:

Các connectionStrings yếu tố xác định một tập hợp các cơ sở dữ liệu chuỗi kết nối, như tên/giá trị cặp, cho các ứng dụng ASP.NET và tính năng.

Trong các phiên bản trước của ASP.NET, chuỗi kết nối được lưu trữ trong appSettings. Trong ASP.NET 2.0, các tính năng, chẳng hạn như Phiên, Tư cách thành viên, Cá nhân hóa và Trình quản lý vai trò, dựa vào chuỗi kết nối là được lưu trữ trong phần tử connectionStrings . Bạn cũng có thể sử dụng phần tử kết nối connectionStrings để lưu trữ chuỗi kết nối cho các ứng dụng của riêng bạn.

Vì vậy, sự khác biệt thực sự duy nhất là các tính năng được nhúng trong ASP.NET 2.0 sẽ mong đợi các chuỗi kết nối của chúng nằm trong vùng connectionStrings.

+0

Tại sao Session, Membership, Personalization và Role Manager không thể có cài đặt ứng dụng đòn bẩy? Chức năng bổ sung nào làm các chuỗi kết nối cung cấp các cài đặt ứng dụng đó không? – Paul

2

Nếu bạn tách chuỗi kết nối của mình thành phần <connectionStrings>, cấu hình của bạn sẽ dễ đọc, duy trì và xử lý hơn. Ngoài ra, hơn nữa, bạn có thể tăng cường bảo mật bằng cách mã hóa chỉ các chuỗi kết nối vì chúng thường là các mục nhạy cảm và nếu chúng nằm trong phần riêng của chúng, bạn có thể dễ dàng mã hóa một phần đó và để phần còn lại của app.config của bạn ở dạng văn bản thuần túy, vì vậy bạn có thể dễ dàng cập nhật và sửa đổi cài đặt.

Marc

+0

Bạn có thể dễ dàng mã hóa cài đặt ứng dụng. Đối với sự tách biệt, tôi có thể nghĩ ra nhiều cách khác nhau để tổ chức các ứng dụng bên cạnh các chuỗi kết nối so với các ứng dụng. Tôi hy vọng rằng có nhiều quyết định của MSFT để giới thiệu sự tách biệt này hơn những gì Eric đã đề cập. Điều này có vẻ tùy ý nếu không. – Paul

+0

Ngoài ra, quyết định này dường như có những tác dụng phụ lạ ngày hôm nay. Trong Gói dịch vụ ứng dụng Azure, bạn có thể định cấu hình Cài đặt ứng dụng (cả cài đặt ứng dụng và chuỗi kết nối). Tuy nhiên, cấu hình ứng dụng không ghi đè cài đặt ứng dụng app.config trong khi chuỗi kết nối ghi đè lên chuỗi kết nối app.config. Bởi vì điều này, tôi bây giờ đặt các thiết lập chuỗi không kết nối trong các chuỗi kết nối đơn giản chỉ cho khả năng ghi đè của các chuỗi kết nối. Tôi không thấy điều này dễ đọc, duy trì hoặc xử lý hơn. – Paul

+0

@Paul - Cài đặt ứng dụng được đặt trong cổng DO ghi đè cài đặt ứng dụng trong web.config của trang web hoặc tệp app.config của webjob của bạn. Tôi sử dụng tất cả các thời gian. – Tim

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