У меня есть настраиваемый раздел конфигурации, работающий под ASP.NET 4.0, в который я хотел бы сохранить изменения.Используются следующие классы:
- QueueConfiguration: a ConfigurationElement
- QueueCollection Queues // список поддерживаемых очередей
- QueueCollection: aConfigurationElementCollection
- Очередь: элемент конфигурации
Это работает:
// This is a test case to ensure the basics work
Queue newQueue = new Queue();
QueueCollection queues = new QueueCollection();
queues.Add(newQueue); // queues.Count is incremented here
Это не работает (и не выдает ошибку):
// Read existing QueueConfiguration
Queue newQueue = new Queue();
QueueConfiguration queueConfig = ConfigurationManager.GetSection("Queuing") as QueueConfiguration;
queueConfig.Queues.Add(newQueue); // queues.Count is NOT incremented here
Это также не работает (и не выдает ошибку):
// Load QueueConfiguration from web.config
Queue newQueue = new Queue();
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
QueueConfiguration queueConfig = config.GetSection("Queuing") as QueueConfiguration;
queueConfig.Queues.Add(newQueue); // queues.Count is NOT incremented here
Моим первым шагом было то, что один из трех разделов конфигурации был помечен как доступный только для чтения.Однако при отладке метод IsReadOnly () возвращает false для моего экземпляра QueueConfiguration и QueueCollection.
Мой класс QueueCollection включает в себя этот фрагмент:
public void Add(Queue queue)
{
base.BaseAdd(queue, true);
}
Когда я выполняю код,эта строка достигнута, base.BaseAdd вызывается, но свойство Count не увеличивается.Как будто BaseAdd просто игнорирует запрос.
Есть предложения?(Надеюсь, я упускаю что-то очевидное!)