2010-03-23 33 views
10

Tôi muốn lưu một số dữ liệu tùy chỉnh vào tệp cấu hình ứng dụng và tôi cần tạo một số phần tùy chỉnh trong app.config. Đọc dữ liệu tùy chỉnh từ app.config là nhiệm vụ đơn giản, nhưng tôi không thể ghi thông tin từ chương trình của tôi vào app.config. Để tìm giải pháp cho vấn đề này, tôi tạo dự án thử nghiệm.Viết phần tùy chỉnh vào app.config

Để đọc dữ liệu từ phần tuỳ chỉnh app.config tôi sử dụng thông tin từ bài viết này:

http://devlicio.us/blogs/derik_whittaker/archive/2006/11/13/app-config-and-custom-configuration-sections.aspx

Trả lời

4

Đầu ghi đè IsReadyOnly() trong CustomConfigSection của bạn để trả về false.

Một khi bạn đã làm điều đó bạn sẽ có thể làm điều gì đó như thế này (đây là cho ASP.NET, nhưng nó có thể là transferably):

System.Configuration.Configuration configFile = WebConfigurationManager.OpenWebConfiguration("~"); 
CustomConfigSection config = (CustomConfigSection)configFile.GetSection("Custom"); 
config.Tweak = 1; 
config.Change = "foo"; 
configFile.Save(); 

Cho rằng một thử.

+2

Bạn có nghĩa là ghi đè 'IsReadOnly()' để trả về 'false' không? – FrustratedWithFormsDesigner

+0

Đúng. Tôi là một wally. Đã chỉnh sửa. – Pike65

+0

Cảm ơn bạn rất nhiều! Nó rất đơn giản và rất hữu ích! –

5

Bạn thực sự không nên viết bất cứ điều gì cho app.config, bởi vì nếu bạn làm như vậy bạn đang hạn chế sử dụng ứng dụng của bạn để quản trị viên chỉ. Thực tiễn tốt hơn là ghi cài đặt vào tệp .config riêng biệt nằm trong thư mục hồ sơ người dùng, ví dụ: <profiles>\<user name>\Application Data\<your product name>.

+0

Cảm ơn. Tôi nghĩ rằng người dùng ứng dụng chỉ cần đọc và viết quyền. Nếu tôi sai, hãy sửa tôi. –

+1

Để làm rõ: tệp 'app.config' được cài đặt vào một thư mục bên dưới Tệp chương trình. Theo mặc định, điều này được thiết lập để không cho phép quyền ghi vào người dùng chuẩn. Mặc dù .NET sẽ vui vẻ cho phép bạn ghi vào bất kỳ tệp '.config' nào thông qua API cấu hình thông thường, nếu bạn thực sự thử nó chạy như một người dùng chuẩn thì bạn sẽ nhận được một ngoại lệ bảo mật. –

+0

Cảm ơn. Tôi sẽ nhớ điều này. Tôi sẽ sử dụng oportunity để viết vào app.config cho các dịch vụ windows của tôi không cho ứng dụng máy tính để bàn. –

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