我正在使用app.config文件来存储我的应用程序的动态参数。问题是,当我更改app.config文件中的值并启动应用程序时,它不会从配置文件加载新值。似乎app.config文件中的值只在编译时被读取并嵌入到exe文件中!
这是我阅读配置文件的方式:
public class Helper
{
static Helper()
{
Foo = ConfigurationManager.AppSettings["Foo"];
}
public static string Foo { get; set; }
}
我错过了什么吗?
答案 0 :(得分:23)
您确定要更改正确的文件吗?您不想更改app.config文件,而是更改<exename>.exe.config
文件,与.exe
app.config文件是您在ide中编辑的文件,但是当您编译应用程序时,此文件将重命名为<exename>.exe.config
并在编译时复制到输出目录。在查找默认配置时,.exe会查找与其自身名称相同的文件,并带有.config扩展名。
答案 1 :(得分:1)
您的类和方法的静态特性可能会导致问题。也许将其重构为以下内容......
public static class Helper
{
public static string Foo
{
get
{
return ConfigurationManager.AppSettings["Foo"];
}
}
}
实际上,考虑到它,它对你来说并没有多大帮助,因为ConfigurationManager.AppSettings["Foo"]
已经(有效地)是一个静态调用 - 你只是添加另一层抽象,这可能是不需要的。 / p>
答案 2 :(得分:0)
你做过IISReset吗?
此外,还有位于
中的Microsoft.NET缓存WINDOWS\Microsoft.NET\Framework\vXXXXX\Temporary ASP.NET Files.
我会删除此文件夹的数据。