2

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

  • QueueConfiguration:一个配置元素
    • QueueCollection Queues // 要维护的队列列表
  • 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 只是忽略了请求。

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

4

1 回答 1

0

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

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

//Do work

config.Save();
于 2011-12-08T23:19:43.300 回答