为什么app.config值为null?

时间:2011-10-11 00:18:45

标签: asp.net configuration

我有一个三层网络应用程序,可以生成三个独立的dll:

  • Web.UI.dll
  • Web.Application.dll
  • Web.DAL.dll

Web.Application.dllWeb.DAL.dll都有自己的app.configs。我需要访问web.config中的特定设置。我使用以下代码:

[CacheUtil.cs]
string cacheName = ConfigurationManager.AppSettings.Get("CacheName");

我已验证此设置存在。那么,为什么然后,当我运行时,我得到NULL? CacheName是否需要存在于所有.config文件中?

以下是web.config中的设置:

  <appSettings>
    <add key="CacheName" value="staging"/>

仅供参考,CacheUtil是一个在首次访问时初始化的单例。第一次访问发生在DAL.dll项目中。

谢谢!

2 个答案:

答案 0 :(得分:4)

正在阅读web.config。其他配置文件(Web.Application.dll.configWeb.DAL.config读取。

Config不附加到库;仅限于运行的最终可执行文件(AppName.exe.configweb.config

生成EXE的Visual Studio中的项目可以有app.config文件,并且在构建时会特别处理此文件;它被重命名为ProgramName.exe.config并复制到输出目录。在类库或Web应用程序项目中app.config将无效。

答案 1 :(得分:1)

试试这个:

cachename = ConfigurationManager.AppSettings["CacheName"];

这是为了尝试从项目的app.config文件中读取AppSettings。除非使用其他逻辑,否则无法从其他项目读取配置,但它不会通过ConfigurationManager类。它必须是正常的I / O.