ASP.NET (dotnet 2) IIS7 - NameValueCollection 数组未正确读取

Posted

技术标签:

【中文标题】ASP.NET (dotnet 2) IIS7 - NameValueCollection 数组未正确读取【英文标题】:ASP.NET (dotnet 2) IIS7 - NameValueCollection array not being read correctly 【发布时间】:2017-03-09 01:28:32 【问题描述】:

在 web.config 中有一个项目数组 - 只有 2 个

它通常会读取自动池回收中更正的所有元素(这似乎是每天)。

每隔一段时间,数组不会读取所有元素。

我将添加另一个密钥,以便检查项目的数量,但我不太确定在出现问题时该怎么做。为了修复它,我们再次回收应用程序池,这将重新读取它,并且通常会正确。

数组是通过以下方式从 web.config 中读取的:

NameValueCollection nvcDbKeys = nvcDbKeys = NameValueCollection)ConfigurationManager.GetSection("MyArray");

数组是一个简单的键值

<MyArray>
  <add key="prod1" value="user1"/>
  <add key="prod2" value="user2"/>
  <add key="prod3" value="user3"/>
</MyArray>

我进入一个 for 循环来存储值。此代码在第一次作为静态启动器调用 Web 方法时被调用。

我可以抛出异常,但如果计数器与数组条目的数量不匹配,我更愿意强制重新读取。

我可以只重新读取数组,还是需要通过代码强制应用程序池回收?

【问题讨论】:

【参考方案1】:

是的,您可以修改 web.config 文件并读取它的值,而无需重新启动应用程序池。这个question已经回答了详细的解释和实现。

但是,就我个人而言,我不会在 web.config 文件中编写任何必须在运行时更改的代码。如果您更改 web.config,您的更改将在 AppDomain 重新启动之前生效。

【讨论】:

如果需要,您将如何重读配置?手动阅读,而不是通过 NameValueCollection

以上是关于ASP.NET (dotnet 2) IIS7 - NameValueCollection 数组未正确读取的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC + IIS7 + FireFox:URL 中的斜杠

在 IIS 7.5 上运行 ASP.NET Core 时,日志在哪里?

如何使用 dotnet cli 命令以 VB.NET 语言创建 ASP.NET Core 项目?

在mac中找不到匹配命令“dotnet-aspnet-codegenerator”asp.net core 2.1项目的可执行文件

IIS7 集成与经典管道 - 使用更多 ASP.NET 线程?

Dotnet 在 Mac ASP.NET Core 3 上意外退出