簡體   English   中英

如何從C#中另一個應用程序的app.config / web.config文件中提取連接字符串

[英]How to extract connection string from another application's app.config / web.config file in C#

我正在編寫一個命令行實用程序,它將位於Web應用程序的bin文件夾中,並且需要讀取該Web應用程序的連接字符串,以便對該數據庫執行一些維護任務。

我已經閱讀了許多有關如何使用ConfigurationManager.OpenExeConfiguration從當前應用程序的配置文件中讀取設置的示例。 但這似乎不適用於我的情況,因為我需要讀取另一個應用程序的配置文件。

一種方法是使用XDocument.Load ,它將讀取xml文件並允許我使用LinqToXml對其進行操作。 如果我必須學習這種方法,我會做的,但是要花一點時間才能正確。

有沒有一種方法可以利用ConfigurationManager的某些功能來執行此操作?

System.ConfigurationSystem.Xml.Linq都很大,並且我從零開始-因此,如何以最小的麻煩完成此操作的任何提示將不勝感激。

通常,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;
}

注意:未經測試,寫在我頭上。

這里是解決方案和解釋: 將app.config文件重定位到自定義路徑問題是,使用AppDomain比學習Linq2Xml困難得多。 我的建議是將文件作為xml處理。 除了Linq2Xml之外,還有其他處理xml文件的方法: XmlDocumentXPath 如果您只需要配置文件中的一些元素,建議您使用XPath ,否則,最好使用Linq2Xml。

默認情況下,正在運行的應用程序只有1個“ .config”文件。 它是與啟動程序的EXE相關聯的“ .config”文件。您可能應該將config值從Another app / web .config復制到正在運行的應用程序。

請參考此鏈接 您將了解如何使用XDocument加載文件,Linq-to-XML或XPath來查找字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM