当几个应用程序有一个app.config文件时,是否会有锁定问题?加载外部app.config是否锁定它?
config = ConfigurationManager.OpenExeConfiguration(Path.Combine("C:\test\root", "Master.exe"));
string logpath = config.AppSettings.Settings["Log.Path"].Value;
当几个应用程序有一个app.config文件时,是否会有锁定问题?加载外部app.config是否锁定它?
config = ConfigurationManager.OpenExeConfiguration(Path.Combine("C:\test\root", "Master.exe"));
string logpath = config.AppSettings.Settings["Log.Path"].Value;
App.configs是只读的,除非应用程序发布者发布它的新版本,否则不应更改。用户配置设置存储在不在app.config中的user.config文件中。在这个user.config文件的缺失中,app.config提供了默认值。
我在你的最后一个问题评论5分钟前Common app.config for multiple applications
由于文件应注明只读外部应用程序不应该锁定的文件。如果您正在写入来自不同程序集的app.configs,那么配置文件可能会被锁定。我不建议从不同的组件写入App.Config中,但如果这样做,在读/写放在一个try/catch操作,如果它的IO异常检查,如果该文件被锁定:
private static bool IsFileLocked(Exception exception)
{
int errorCode = Marshal.GetHRForException(exception) & ((1 << 16) - 1);
return errorCode == 32 || errorCode == 33;
}
你正在做一些非常规的事情,让多个应用共享一个app.config。顾名思义,app.config旨在为每个应用程序。有System.Configuration
中的方法允许应用程序写入app.config(因此写入锁定一会儿,另一个应用程序试图在同一时间写入将收到错误。)我个人倾向于将共享配置数据库。
然而,如果你对此有强烈的理由,你应该没问题。应用程序在启动时读取app.config并缓存设置。我建议在你的开发者之间建立一个文件化的约定,即应用程序共享配置不应该写入app.config。
请注意,ASP.NET web.config
有一些额外的行为,因为它受到监视以进行更改。但我认为这是特定于IIS的;我不认为你正在处理web.config。