是否可以将整个App.Config文件重定位到自定义路径?
配置文件与exe文件位于同一文件夹中似乎有点奇怪,Windows的新approcah将所有程序设置保存在c:\ ProgramData和all中.
我们的另一个要求是以编程方式指定在哪里找到app.config文件.这样做的原因是我们从同一个exes生成不同的服务实例,并希望将每个服务的app.config存储在c:\ ProgramData \\下该服务的settings文件夹中.
在.NET Win控制台应用程序中,我想在与控制台应用程序二进制文件不同的位置访问App.config文件.例如,C:\ bin\Text.exe如何从C:\ Test.exe.config获取其设置?
我遇到了想要写入.exe.config的应用程序的问题.
请参阅以下代码:
using System;
using System.Configuration;
using System.IO;
namespace ConfigurationManagerError
{
class Program
{
static void Main(string[] args)
{
try
{
// set Config-File to persistent folder
ExeConfigurationFileMap exeMap = new ExeConfigurationFileMap();
exeMap.ExeConfigFilename = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
"ConfigError\\ConfigurationManagerError.exe.config");
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(exeMap, ConfigurationUserLevel.None);
config.AppSettings.Settings.Add(
new KeyValueConfigurationElement("TestKey", "TestValue"));
config.Save(ConfigurationSaveMode.Modified);
Console.WriteLine("Successfully write of Configuration-File to " + config.FilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
只要我作为具有读写访问权限的用户运行该文件夹一切正常.如果我的用户在该文件夹中没有写入权限,则会出现一个异常,指出不允许写入.exe.config的权限.到目前为止,一切都如预期.
但是,如果我现在有一个用户有权写入现有文件而不是创建新文件,则抛出异常
Access to the path 'C:\ProgramData\ConfigError\ila2ba_0.tmp' is denied
Run Code Online (Sandbox Code Playgroud)
似乎ConfigurationManager想要创建一个tmp-File.怎么解决这个问题? …