【问题标题】:ExeConfigurationFileMap: InvalidArgumentException, The string parameter 'fileMap.ExeConfigFilename' cannot be null or emptyExeConfigurationFileMap:InvalidArgumentException,字符串参数“fileMap.ExeConfigFilename”不能为空或为空
【发布时间】:2014-12-18 14:25:36
【问题描述】:

我在运行应用程序时收到 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。

【问题讨论】:

  • 您能否添加更多代码来帮助我们调试您的问题。还请详细说明出了什么问题。
  • @fizzix 不确定我还能添加什么。当我尝试将变量设置为配置文件中的值之一时,代码在启动时会在这些代码行中中断。如果我尝试在此异常之后继续,我接下来会在尝试将变量设置为配置文件中的值之一时收到 TypeInitalizationException。总而言之,我运行我的应用程序,它抛出 InvalidArgumentException,告诉我 fileMap.ExeConfigFilename 不能为 null 或空,即使我认为我正在设置它。
  • 迈克尔,这太完美了。我不是 C# 专家,所以如果您在问题中提供了正确的代码和信息,我相信很快就会有人能够帮助您:)

标签: c# .net configuration configurationmanager


【解决方案1】:

遇到了同样的问题。由于一些荒谬的原因,即使使用文件路径初始化 ExeConfigurationFileMap 也不会设置配置对象构造函数所需的属性 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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      相关资源
      最近更新 更多