[英]C# My test project does not load correctly data from the web.config / app.config file of another project
[英]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.Configuration
和System.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文件的方法: XmlDocument
和XPath
。 如果您只需要配置文件中的一些元素,建議您使用XPath
,否則,最好使用Linq2Xml。
默認情況下,正在運行的應用程序只有1個“ .config”文件。 它是與啟動程序的EXE相關聯的“ .config”文件。您可能應該將config值從Another app / web .config復制到正在運行的應用程序。
請參考此鏈接 。 您將了解如何使用XDocument加載文件,Linq-to-XML或XPath來查找字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.