我有一个三层网络应用程序,可以生成三个独立的dll:
Web.Application.dll
和Web.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项目中。
谢谢!
答案 0 :(得分:4)
正在阅读web.config
。其他配置文件(Web.Application.dll.config
和Web.DAL.config
)不读取。
Config不附加到库;仅限于运行的最终可执行文件(AppName.exe.config
或web.config
)
生成EXE的Visual Studio中的项目可以有app.config
文件,并且在构建时会特别处理此文件;它被重命名为ProgramName.exe.config
并复制到输出目录。在类库或Web应用程序项目中app.config
将无效。
答案 1 :(得分:1)
试试这个:
cachename = ConfigurationManager.AppSettings["CacheName"];
这是为了尝试从项目的app.config文件中读取AppSettings
。除非使用其他逻辑,否则无法从其他项目读取配置,但它不会通过ConfigurationManager类。它必须是正常的I / O.