.NET ConfigurationElementCollection.Add方法不会将项添加到集合

时间:2011-12-08 18:20:46

标签: asp.net webconfigurationmanager configurationelement

我有一个在ASP.NET 4.0下运行的自定义配置部分,我想将更改保存到。涉及的课程是:

  • QueueConfiguration:ConfigurationElement
    • QueueCollection队列//要维护的队列列表
  • QueueCollection:一个ConfigurationElementCollection
  • 队列:配置元素

这有效:

// 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()方法为我的QueueConfiguration和我的QueueCollection实例返回false。

我的QueueCollection类包含此代码段:

public void Add(Queue queue)
{
  base.BaseAdd(queue, true);
}

当我单步执行代码时,会到达此行,调用base.BaseAdd,但不会增加Count属性。就好像BaseAdd只是忽略了请求。

有什么建议吗? (我希望我错过了一些明显的东西!)

1 个答案:

答案 0 :(得分:0)

在将时间添加到队列后,您是否调用了Config.Save()。

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");

//Do work

config.Save();