如何从C#中的另一个应用程序的app.config / web.config文件中提取连接字符串

时间:2014-06-05 11:02:34

标签: c# web-config linq-to-xml app-config

我正在编写一个命令行实用程序,它将位于Web应用程序的bin文件夹中,需要读取该Web应用程序的连接字符串,以便在该数据库上执行某些维护任务。

我已经阅读了大量有关如何使用ConfigurationManager.OpenExeConfiguration从当前应用程序的配置文件中读取设置的示例。但这似乎并不适用于我的情况,因为我需要阅读另一个应用程序的配置文件。

一种方法是使用XDocument.Load来读取xml文件并允许我使用LinqToXml对其进行操作。如果我必须学习这种方法,我会这样做,但是需要一点时间才能做好。

我有没有办法利用ConfigurationManager的某些部分来做这件事?

System.ConfigurationSystem.Xml.Linq都很大,而且我从零开始 - 所以任何关于如何以最小的麻烦完成此任务的提示都将不胜感激。

4 个答案:

答案 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文件:XmlDocumentXPath。如果您只需要配置文件中的一些元素,我建议使用XPath,否则Linq2Xml就可以了。

答案 2 :(得分:0)

默认情况下,只有1" .config"正在运行的应用程序的文件这是" .config"与启动程序的EXE关联的文件。您应该将配置值从Another app / web .config复制到正在运行的应用程序。

答案 3 :(得分:0)

请参阅此link。您将了解如何使用XDocument加载文件,Linq-to-XML或XPath来查找字符串。