ExeConfigurationFileMap:InvalidArgumentException,字符串参数' fileMap.ExeConfigFilename'不能为null或为空

时间:2014-10-23 00:16:05

标签: c# .net configuration configurationmanager

运行应用程序时出现InvalidArgumentException。我正在尝试创建一个新的ExeConfigurationFileMap,然后使用ConfigurationManager加载它。

    public static ExeConfigurationFileMap configFile = new ExeConfigurationFileMap(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\QuikSnap\\QuikSnap.config");
    public static Configuration config = ConfigurationManager.OpenMappedExeConfiguration(Settings.configFile, ConfigurationUserLevel.None);

我还试图在声明后设置配置文件,但仍然没有运气。

如果我在此异常后尝试继续,则在尝试将变量设置为配置文件中的某个值时,接下来会收到TypeInitalizationException。

2 个答案:

答案 0 :(得分:2)

遇到同样的问题。出于某种荒谬的原因,即使使用文件路径初始化ExeConfigurationFileMap也不会设置Configuration对象构造函数所需的属性ExeConfigFilename。我通过在实例化ExeConfigurationFileMap对象后立即设置该属性来修复它,如下所示:

public static ExeConfigurationFileMap configFile = new ExeConfigurationFileMap(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\QuikSnap\\QuikSnap.config");
configFile.ExeConfigFilename = "QuikSnap.config";
public static Configuration config = ConfigurationManager.OpenMappedExeConfiguration(Settings.configFile, ConfigurationUserLevel.None);

答案 1 :(得分:1)

您没有使用配置文件路径的值设置正确的属性。 此外,您对同一个类中的另一个静态变量具有静态变量依赖性。这里可能存在执行顺序问题(尽管我不确定) 试试这个:

public static Configuration config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
{
    ExeConfigFilename = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\QuikSnap\\QuikSnap.config"
}, ConfigurationUserLevel.None);