【问题标题】:Connection string has been loaded from Web.Config instead of App.Config连接字符串已从 Web.Config 而不是 App.Config 加载
【发布时间】:2015-02-24 11:55:24
【问题描述】:

我在 cron.exe 中有控制台应用程序,它引用了 Web 应用程序。 Cron 项目有自己的 App.Config 和连接字符串。 Cron 项目参考 web 应用程序,它的 web.config 具有不同的连接字符串。

当我运行 cron.exe 时,它​​会从 Web 应用程序的 web.config 而不是它自己的 app.config 加载连接字符串?

如何强制控制台应用程序使用项目中包含的 app.config?

    string key = "SqlServices";
    var connStr = ConfigurationManager.ConnectionStrings[key];

    if (connStr == null)
    {
        List<string> conns = new List<string>();
        for (int i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++)
        {
            var connI = ConfigurationManager.ConnectionStrings[i];

            conns.Add(connI.Name + ": " + connI.ConnectionString);
        }

        throw new ConfigurationErrorsException(string.Format("Missing connection string {0}. Founded these connection strings: {1} ", key, string.Join(";", conns.ToArray())));
                }

                return connStr.ConnectionString;
            }
     }

解决方案

项目合并配置行的几行:

AppDomain.CurrentDomain.SetData("APPBASE", configDir);
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath);

【问题讨论】:

  • 你能告诉我们你是如何读取连接字符串的吗?
  • ConfigurationManager.AppSettings["NodeNameInAppConfig"] 检查这个
  • 这听起来是有联系的。我只有一个在控制台应用程序和 Web 应用程序之间共享的共享代码,我不能/不想为 Web 和控制台编写单独的代码。它可能在您提到的设置应用程序的默认配置中。此外,ConfigurationManager.AppSettings 不用于保存连接字符串。
  • 对不起,你们不知道这个项目有什么特别之处。这对我来说也是一个惊喜。

标签: c# web-config app-config web-application-project


【解决方案1】:

可以在控制台应用程序中使用 web.config,反之亦然:

AppDomain.CurrentDomain.SetData("APPBASE", configDir); AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath);

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 2013-03-04
    • 2017-01-20
    • 1970-01-01
    • 2016-02-10
    • 2012-10-07
    • 2014-06-15
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多