Trong trường hợp chuỗi kết nối, thực sự có thể trỏ đến một tệp được chia sẻ. Nếu tệp được chia sẻ nằm trên UNC mạng, tệp đó yêu cầu đặc quyền quản trị trên máy nơi ứng dụng sẽ được lưu trữ.
Giải pháp: Trong web.config của bạn, sử dụng configSource để trỏ đến tệp cấu hình cục bộ. Do các hạn chế của .Net, điều này phải bằng hoặc thấp hơn cấp của tệp cấu hình gốc. Tôi chỉ trỏ đến một tệp trong chính thư mục ứng dụng:
<connectionStrings configSource="ConnectionStrings.config" />
Ở vị trí được chia sẻ mà người dùng nhóm ứng dụng có thể truy cập, hãy thêm tệp cấu hình chứa các chuỗi kết nối được chia sẻ. Tệp này không được chứa bất kỳ xml nào ngoài phần connectionStrings. Tệp được chia sẻ, ConnectionStrings.config, trông giống như sau:
<connectionStrings>
<clear/>
<add name="connString1" connectionString="connString1 info goes here"/>
<add name="connString2" connectionString="connString2 info goes here"/>
</connectionStrings>
Bây giờ là mẹo. Tạo một liên kết tượng trưng của Windows trong thư mục ứng dụng của bạn trỏ đến tệp cấu hình được chia sẻ bên ngoài. Bạn sẽ cần các đặc quyền của quản trị viên để thực hiện việc này:
mklink ConnectionStrings.config \\someServer\someShare\someFolder\ConnectionStrings.config
Chúng tôi vừa vượt qua .Net. Hệ thống cấu hình sẽ sử dụng cài đặt configSource để tìm các chuỗi kết nối trong tệp cục bộ có tên là ConnectionStrings.config. Liên kết tượng trưng trông giống như một tệp tới .Net và liên kết tượng trưng phân giải thành tệp cấu hình được chia sẻ.
Lưu ý: Các thay đổi đối với tệp được chia sẻ không tự động kích hoạt khởi động lại ứng dụng trong .Net. Trong trường hợp IIS, trang web hoặc nhóm ứng dụng sẽ cần được khởi động lại theo cách thủ công.
Do cần có đặc quyền quản trị để tạo liên kết tượng trưng, cách tiếp cận này có thể không phù hợp với tất cả mọi người. Có hai lựa chọn thay thế liên quan có thể hoạt động nếu tệp được chia sẻ nằm trên cùng một ổ đĩa logic - liên kết cứng và các mối nối. Xem thảo luận này và thảo luận này để biết thêm thông tin.