2011-10-06 31 views
7

Tôi có tôi appSettings định nghĩa trong một tập tin cấu hình riêng biệt gọi là Appsettings.Dev.Config, và tôi bao gồm tập tin bên trong tập tin web.config của tôi như vậyLàm thế nào tôi có thể tham khảo một appSetting trong một phần khác của web.config

<appSettings configSource="ConfigFiles\AppSettings.Dev.config"/> 

Cho phép nói một trong các cài đặt trong tệp là

<add key="MailerEmailAccount" value="[email protected]" /> 

Tôi có thể truy cập giá trị của cài đặt MailerEmailAccount ở nơi khác bên trong web.config không? Làm sao?

Trả lời

4

Không, tệp cấu hình web không thể tự kéo "cài đặt"; nó không năng động chút nào. Loại chức năng động duy nhất là khả năng bao gồm các tệp .config khác, nhưng đó chỉ là "hút tất cả các cài đặt này như thể chúng là một phần của tôi".

+0

tôi làm điều đó (kéo trong cài đặt từ file khác) cho appSettings và connectionStrings sử dụng thuộc tính configSource. Điều đó dường như không hoạt động đối với thẻ mailSettings bên trong thẻ system.net (hoặc cho chính thẻ system.net). Có cách nào để kéo cài đặt bên cạnh appSettings và connectionStrings từ các tệp khác không? – floatingfrisbee

+0

Tôi không chắc chắn nếu có những hạn chế đối với điều đó; như bạn tôi sử dụng nó chủ yếu cho appSettings và connectionStrings. Nếu bạn đang sử dụng VS2010, bạn cũng có thể xem xét các biến đổi Web.Config: http://weblogs.asp.net/srkirkland/archive/2009/10/13/common-web-config-transformations-with-visual-studio -2010.aspx – CodingGorilla

+0

Chỉ ra rằng các thẻ system.net và mailSettings không thể được lấy từ một tệp khác. Tuy nhiên, thẻ smtp (đó là một con của mailSettings) có thể được. Tôi đang sử dụng biến đổi web.config nhưng vấn đề cụ thể này không thể được giải quyết bằng cách đó. Cảm ơn. – floatingfrisbee

4

Có thể nếu bạn tạo một tùy chỉnh ConfigurationSection để lấy giá trị từ appSettings.

Dưới đây là một bài viết mà giải thích làm thế nào để tạo ra một phần cấu hình tùy chỉnh:
http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

Tôi không biết nếu điều này là những gì bạn đang tìm kiếm, nhưng đó là cách duy nhất tôi có thể nghĩ ra để đọc một cài đặt web.config từ trong số web.config.

EDIT

tôi đã không kiểm tra này, nhưng có lẽ một cái gì đó như thế này sẽ làm việc ?:

[ConfigurationProperty("localName", IsRequired = true, IsKey = true)] 
public string LocalName 
{ 
    get 
    { 
     return this["localName"] as string; 
    } 
    set 
    {     
     this["localName"] = WebConfigurationManager.AppSettings.Get(value); 
    } 
} 
+0

Cảm ơn bạn đã liên kết bị xâm nhập và đoạn mã. Không chắc chắn mã hoạt động cho những gì tôi cần ngay bây giờ nhưng đó là một ý tưởng tốt. – floatingfrisbee

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