我正在编写一个命令行实用程序,它将位于Web应用程序的bin文件夹中,需要读取该Web应用程序的连接字符串,以便在该数据库上执行某些维护任务。
我已经阅读了大量有关如何使用ConfigurationManager.OpenExeConfiguration
从当前应用程序的配置文件中读取设置的示例。但这似乎并不适用于我的情况,因为我需要阅读另一个应用程序的配置文件。
一种方法是使用XDocument.Load
来读取xml文件并允许我使用LinqToXml对其进行操作。如果我必须学习这种方法,我会这样做,但是需要一点时间才能做好。
我有没有办法利用ConfigurationManager
的某些部分来做这件事?
System.Configuration
和System.Xml.Linq
都很大,而且我从零开始 - 所以任何关于如何以最小的麻烦完成此任务的提示都将不胜感激。
答案 0 :(得分:2)
通常,ConfigurationManager允许您指定文件的路径。
请参阅以下代码:
private const string configFile = @"C:\Directory\SubDirectory\file.config";
public static string GetConnectionString()
{
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap() { ExeConfigFilename = configFile };
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
return config.ConnectionStrings.ConnectionStrings["MYConnectionString"].ConnectionString;
}
注意:未经测试并写出我的脑袋。
答案 1 :(得分:0)
以下是解决方案和解释:Relocating app.config file to a custom path问题在于使用AppDomain
比学习Linq2Xml
要困难一些。我的建议是将文件作为xml处理。在Linq2Xml
旁边,还有其他方法可以处理xml文件:XmlDocument
和XPath
。如果您只需要配置文件中的一些元素,我建议使用XPath
,否则Linq2Xml就可以了。
答案 2 :(得分:0)
默认情况下,只有1" .config"正在运行的应用程序的文件这是" .config"与启动程序的EXE关联的文件。您应该将配置值从Another app / web .config复制到正在运行的应用程序。
答案 3 :(得分:0)
请参阅此link。您将了解如何使用XDocument加载文件,Linq-to-XML或XPath来查找字符串。