【发布时间】: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