Tôi thích giữ các chuỗi kết nối của mình trong machine.config.
Chuỗi kết nối của tôi khác nhau giữa các môi trường DEV, QA và PROD và nếu tôi giữ chúng trong web.config, tôi không thể xóa thư mục đích của mình một cách an toàn và sao chép mã mới. Hoặc tôi sẽ phải nhớ để triển khai tất cả mọi thứ nhưng web.config, điều này tạo ra các vấn đề khi các phần khác của thay đổi web.config.
Điều đó phụ thuộc vào hoàn cảnh của bạn, nhưng khi nó phức tạp hơn thì nguy cơ có chuỗi kết nối sai trong môi trường không đúng là quá lớn. Chúng tôi đã thực sự có những tình huống mà thử nghiệm đã đánh vào cơ sở dữ liệu sai vì chuỗi kết nối vô tình bị di chuyển. Machine.config được sử dụng cho các mục máy cụ thể - do đó tên. Nó không bao giờ được chuyển từ máy này sang máy khác.
Vì vậy, trong máy của tôi.config Tôi có nhiều chuỗi kết nối như blogConnString, forumConnString, projectxConnString, v.v. Tôi không xem xét cài đặt trộn này cho các trang web khác nhau, tôi cho rằng nó giữ cài đặt mức máy trong maching.config.
Bạn đã lo lắng về vấn đề bảo mật, tôi nghĩ rằng khi chúng ở trên hộp, chúng được bảo mật như nhau. Nhưng nếu chuỗi kết nối nằm trong web.config, nó thường kết thúc trong kiểm soát nguồn, bàn của nhà phát triển, trong tệp sao lưu, trong kế hoạch cài đặt, bộ triển khai, v.v. Điều này làm cho cách web.config kém an toàn hơn đối với tôi.
Cuối cùng, cách tiếp cận khác là để có nó trong một tập tin cấu hình hoàn toàn khác nhau (nói WebEnvironment.confg), sau đó được tham chiếu trong web.config của bạn. Tệp này sẽ nằm trong thư mục không phải là thực tế trong trang web của bạn, nhưng hầu như nằm trong trang web của bạn. Chi tiết khác là HERE.
Ở cả hai vị trí bạn nên xem xét mã hóa nó (mặc dù nếu bạn đang sử dụng kết nối đáng tin cậy, tôi sẽ không lo lắng nhiều). Có một công cụ khá tiện dụng cho việc này ngay bây giờ tại http://somewebguy.wordpress.com/2009/07/16/encrypt-your-web-config-please/ – blowdart
Liên kết trong nhận xét ở trên đã chết; tại http://hugoware.net/blog/encrypt-your-web-config-please –