【问题标题】:Program cannot find app.config程序找不到 app.config
【发布时间】:2013-04-02 18:26:33
【问题描述】:

// 将 LastRun 设置为现在
config.AppSettings.Settings["LastRun"].Value = DateTime.Now.ToString(); // 保存所有设置 config.Save(ConfigurationSaveMode.Modified);

此代码在我的开发服务器中运行良好,但在我的生产服务器中运行不正常。我的程序似乎无法与我的 app.config 文件通信。我已经检查了所有的“明显”。 .有任何想法吗 ... ?

【问题讨论】:

  • 您确认app.config 存在于服务器上吗?您遇到什么错误?
  • 来吧。 . .所有的“显而易见”。 . .它确实存在......当我尝试将配置文件中的值以及上面的代码分配给变量时,它只是给了我一个“System.ArgumentNullException:字符串引用未设置为字符串的实例” ^^ ^ 保存应用设置
  • 应用程序对文件夹/文件有权限吗?
  • 是的,它有完整的权限
  • 这是一个什么样的应用程序?网络?安慰? Winforms?

标签: c# visual-studio-2012


【解决方案1】:

从您的代码示例中,我无法判断您的配置变量是如何初始化的。但是,从 cmets 那里,您有一个 Web 应用程序。除非您尝试加载特定的 app.config 文件,否则 Web 应用将尝试从 web.config 获取 AppSettings。

以编程方式更改 web.config 的值不是一个好主意。更改 web.config 将导致应用程序重新启动。

如果您有一个不同的 app.config 来存储此类信息,那将比尝试更改 web.config 更好。但是您必须专门加载文件,如下所示:

Configuration config = WebConfigurationManager.OpenWebConfiguration("yourPath\app.config");

ConfigurationManager.OpenExeConfiguration() 旨在用于可执行应用程序而不是 Web 应用程序。尝试使用WebConfigurationManager,如上所示。

您可以在此SO question/answers 中找到更多信息。

更多信息可以在SO question/answer找到。

【讨论】:

  • 我一直在使用:Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); . . .这不也行吗?
  • 它适用于可执行文件。试试 WebConfigurationManager。看看我链接的其他问题。
  • 我收到一个错误:System.Configuration.configurationElement.this[System.Configuration.ConfigurationProperty]' 由于其保护级别而无法访问:Configuration cfg = WebConfigurationManager.OpenWebConfiguration("yourPath\app.配置");字符串 test1 = cfg.AppSettings["LastRun"]; //错误
  • 查看我链接的第一个 SO 问题中的答案。您可能需要调整配置文件所在文件夹的权限。
  • 所有权限都可以。双重检查。 WebConfigurationManager 不工作。我不知道为什么会出现“无法访问”的错误。真的不知道还能做什么。 . .
猜你喜欢
  • 2010-10-03
  • 2011-12-23
  • 1970-01-01
  • 2017-01-17
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多