2013-07-10 35 views
5

Tôi đang thiết kế một dự án ASP.NET MVC4 Web App. Trong thư mục gốc của dự án của tôi, tôi có tệp thông tin mặc định là Web.config với các phần tử tương ứng của tôi. Cụ thể, tôi có một vài yếu tố được xác định là appSettings. Ví dụ như một đoạn trích để chứng minh điều này:Truy cập appSettings từ nhiều tệp Web.config

<appSettings> 
    <add key="foo" value="bar" /> 
</appSettings> 

Đương nhiên, tôi có thể truy cập phần tử này trong mã sử dụng ConfigurationManager.AppSettings["foo"]. Điều này làm việc hoàn hảo cho tôi. Tuy nhiên, tôi đang tạo một gói NuGet cùng với dự án của tôi. Gói được cài đặt trong thư mục riêng của nó trong thư mục Areas của dự án của tôi. Ở đây, trong thư mục gốc của gói của tôi, tôi có một tệp khác Web.config. Điều này là để khi một người dùng khác nhập gói NuGet, cấu hình cho các tài nguyên gói có nguồn gốc từ gói. Hãy để của gói Web.config chứa sau:

<appSettings> 
    <add key="dirEnabled" value="true" /> 
</appSettings> 

Chỉ cần làm rõ về đường dẫn tương đối, bây giờ tôi có hai tập tin Web.config, một ở ./Web.config và một ở ./Areas/PackageName/Web.config.

Trong gói của tôi, tôi muốn truy xuất giá trị cho dirEnabled. Để làm như vậy, tôi thực hiện cuộc gọi: ConfigurationManager.AppSettings["dirEnabled"]. Tuy nhiên, điều này ném một lỗi. Có vẻ như chỉ có bộ sưu tập appSettings đang được truy xuất từ ​​./Web.config chứ không phải tệp cấu hình gói của tôi. Có thể lấy bộ sưu tập appSettings từ tệp cấu hình của gói của tôi thay vì tệp cấu hình gốc của dự án không?

+0

cũng thấy http://stackoverflow.com/questions/11351106/multiple-appsettings-files-is-it-possible –

Trả lời

7

đặn nó ra! Để sử dụng tệp cấu hình khác, hãy kết hợp WebConfigurationmanager. Vì vậy, để truy cập vào appSettings của ./Areas/PackageName/Web.config, chỉ cần sử dụng:

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName"); 
string dirE = config.AppSettings.Settings["dirEnabled"].Value; 
2

Hãy thử với

<appSettings file="<Path_To_Second_Web.Config>"> 
    ... 
</appSettings > 

trong dự án của bạn Web.config

http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx

+0

Cảm ơn câu trả lời! Nó vẫn còn ném một lỗi chỉ ra rằng nó không thể tìm thấy giá trị, tuy nhiên. – mattkgross

+0

Bạn có thể tìm thấy nội dung nào đó tại đây http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx –

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