我无法从另一个应用程序读取我的配置文件
I can not read my configuration file from another application
我试了所有可能的方法,还是不行。
在我的第一个应用程序中,我的配置文件只有一个选项。
我的第一个应用只是阅读它,仅此而已。
我的第二个应用程序将读取第一个应用程序的配置文件并可以进行更改。
这是我的 app.config:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="TCambio.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings>
<add key="thoras" value="3"/>
</appSettings>
</configuration>
为了阅读关键的 thoras,在我的第二个应用程序中,我执行以下操作:
ConfigurationFileMap fileMap = new ConfigurationFileMap(strfilenamepath);
Configuration configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
try
{
string value = configuration.AppSettings.Settings["thoras"].Value;
MessageBox.Show(value);
}
catch (Exception ex)
{
MessageBox.Show("Error loading file. " + ex.Message);
}
但是我得到了以下错误:
Unable to cast object of type 'System.Configuration.DefaultSection' to type 'System.Configuration.AppSettingsSection'
您遇到的问题是由于在 ConfigurationManager 上使用了 OpenMappedMachineConfiguration
方法。这用于访问 machine 级别的 .config 文件,而不是用于特定应用程序的文件。
如果您将代码更新为:
var fileMap = new ExeConfigurationFileMap
{
ExeConfigFilename = strfilenamepath
};
var configuration = ConfigurationManager.OpenMappedExeConfiguration(
fileMap, ConfigurationUserLevel.None);
因此您访问的是 应用程序 的配置,您应该会发现对 MessageBox.Show
的调用现在会成功并显示数字“3” .
我试了所有可能的方法,还是不行。 在我的第一个应用程序中,我的配置文件只有一个选项。 我的第一个应用只是阅读它,仅此而已。
我的第二个应用程序将读取第一个应用程序的配置文件并可以进行更改。
这是我的 app.config:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="TCambio.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings>
<add key="thoras" value="3"/>
</appSettings>
</configuration>
为了阅读关键的 thoras,在我的第二个应用程序中,我执行以下操作:
ConfigurationFileMap fileMap = new ConfigurationFileMap(strfilenamepath);
Configuration configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
try
{
string value = configuration.AppSettings.Settings["thoras"].Value;
MessageBox.Show(value);
}
catch (Exception ex)
{
MessageBox.Show("Error loading file. " + ex.Message);
}
但是我得到了以下错误:
Unable to cast object of type 'System.Configuration.DefaultSection' to type 'System.Configuration.AppSettingsSection'
您遇到的问题是由于在 ConfigurationManager 上使用了 OpenMappedMachineConfiguration
方法。这用于访问 machine 级别的 .config 文件,而不是用于特定应用程序的文件。
如果您将代码更新为:
var fileMap = new ExeConfigurationFileMap
{
ExeConfigFilename = strfilenamepath
};
var configuration = ConfigurationManager.OpenMappedExeConfiguration(
fileMap, ConfigurationUserLevel.None);
因此您访问的是 应用程序 的配置,您应该会发现对 MessageBox.Show
的调用现在会成功并显示数字“3” .