ASP.NET web.config: configSource so với các thuộc tính tệp


186

Trong một web.config-file trong một ứng dụng ASP.NET, một số phần của cấu hình, như appSettingsconnectionStrings, hỗ trợ các thuộc tính fileconfigSource .

Sự khác biệt giữa việc sử dụng file-attribution và configSource-attribution là gì? Khi nào bạn nên sử dụng thuộc tính nào và bạn có thể sử dụng cả hai?

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>

Câu trả lời:


299

file thuộc tính

  • Chỉ định đường dẫn tương đối đến tệp bên ngoài có chứa cài đặt cấu hình ứng dụng tùy chỉnh
  • cụ thể cho appSettings phần
  • sẽ hợp nhất (và ghi đè) cài đặt trong tệp .config
  • sẽ không khiến ứng dụng web khởi động lại khi sửa đổi tệp được chỉ định
  • http://msdn.microsoft.com/en-US/l Library / ms228154 (v = vs.100) .aspx
  • Sử dụng cấu hình . Cài đặt ứng dụng . Cài đặt . Thêm API sẽ dẫn đến tất cả các cài đặt được hợp nhất trở lại vào chính .configtrên Cấu hình . Lưu cuộc gọi.
  • kể từ .NET 1.1
  • Ngoại lệ không được ném nếu tập tin không tồn tại.

configSource thuộc tính

Các filethuộc tính xác định một tập tin bên ngoài có chứa các thiết lập tùy chỉnh như bạn làm trong mục appSettings của file web.config. Trong khi đó, tệp bên ngoài được chỉ định trong configSourcethuộc tính chứa các cài đặt cho phần mà bạn khai báo configSource cho. Ví dụ: nếu bạn sử dụng configSourcethuộc tính của phần trang, thì tệp bên ngoài sẽ chứa các cài đặt cho phần trang.

Các cài đặt tùy chỉnh được khai báo trong cấu hình bên ngoài được chỉ định trong filethuộc tính sẽ được hợp nhất với các cài đặt trong appSettings phần trong web.configtệp. Trong khi đó, các configSource không không hỗ trợ sáp nhập, nó có nghĩa là bạn sẽ phải di chuyển toàn bộ các thiết lập phần vào tập tin bên ngoài.

http://www.codeproject.com/Messages/1463547/Re-difference-b between-configSource-and-file-attrib.aspx


10
Ngoài ra, thuộc tính "tệp" cho phép bạn chỉ định các tệp bên ngoài cây thư mục ngay lập tức, điều này rất quan trọng để chia sẻ các cài đặt chung giữa các trang web khác nhau. Thật không may, thuộc tính "configsource" giới hạn bạn trong các tệp trong cây hiện tại, vì vậy, đối với các cài đặt được chia sẻ, bạn cần chỉ định một thư mục ảo trong IIS.
Ed Graham

6
Nhận xét trên của tôi không hoàn toàn chính xác và rõ ràng tôi đã bỏ lỡ cửa sổ năm phút hơi tùy tiện để chỉnh sửa nó! Bạn không thể đặt thư mục ảo trong IIS để cho phép các tệp "configsource" tồn tại bên ngoài cây thư mục ngay lập tức. Vì vậy, điều đó thực sự là khá hạn chế. Tôi đã giải quyết nó bằng cách sử dụng một điểm nối (hoặc liên kết cứng NTFS) nhưng nó không chính xác lắm ...
Ed Graham

1
WAO! Câu trả lời tuyệt vời ... điều này thực sự giúp tôi : will not cause web application to restart when modifying the specified file. Tôi cần ứng dụng khởi động lại khi sửa đổi bất kỳ cài đặt nào trong tệp bên ngoài cho phần tùy chỉnh và vì vậy cách thực hiện là với configSource. Thú vị là tôi đã sử dụng filevà các phần khác nhau đang hoạt động. filecũng hoạt động cho các phần khác appSettingsnhưng có những vấn đề được giải thích rõ trong câu trả lời.
Leniel Maccaferri

4
Tôi muốn thêm vào danh sách configSource : It must refer to a file in the same directory or in a subdirectory as the configuration file.. Và cũng vào danh sách tập tin : It can reside outside the directory of the configuration file itself..
thân vào

2
Liên kết được cập nhật cho phần tử ứng dụng Cài đặt
Jarrod
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.