簡體   English   中英

使用ASP.NET的app.config API中的ConnectionString

[英]ConnectionString in app.config API with ASP.NET

我目前正在ASP.net中包含兩個項目的解決方案。 一個MVC項目,另一個是用作API的類庫。

在此輸入圖像描述

目前我的項目MVC的web配置中有一個這樣的連接字符串。

在此輸入圖像描述

我在我的API中使用以下代碼閱讀它:

public ConnectionProvider()
{
    this.connectionString = ConfigurationManager.ConnectionStrings[Connection.Name].ConnectionString.ToString();
    factory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings[Connection.Name].ProviderName.ToString());
}

問題是我想在我的API的app.config中移動連接字符串,默認情況下,每次啟動時,都會在web.config中讀取。

使用資源文件是個壞主意。

只需從api復制連接字符串並將其放在web.config中。 通過使用資源文件,無需重新編譯即無法更新該連接字符串。

Web應用程序將使用web.config,並且可以從那里訪問連接字符串。 如果要在另一個項目(例如桌面應用程序)中重用相同的api,請再次將連接字符串復制到入口點的配置文件中。

正如我通過評論建議的那樣,我會在類庫中使用資源文件。

雖然@Nkosi沒有錯,因為連接字符串將是靜態的,這是在沒有實際API或數據庫調用的情況下攜帶連接字符串的最簡單方法。

但是,並不是整個應用程序需要重新發布。 如果類庫代碼中的功能沒有改變,您可以簡單地構建類庫並覆蓋它的.dll。

另一個有價值的解決方案是將連接字符串保存在所有解決方案將使用的單獨文本文件中。 然后,您可以在所有應用程序中替換該段代碼,同時具有1個集中訪問點,可以替換無需構建和替換任何內容:)。

(代表OP發布解決方案)

感謝Dieter B!

使用資源文件:

在此輸入圖像描述

並在API中閱讀:

public ConnectionProvider()
{
    ResourceManager rm = new ResourceManager("Bank.Project.API.resources", GetAssemblyByName("Bank.Project.API"));

    this.connectionString = rm.GetString(Connection.Name);
    this.factory = DbProviderFactories.GetFactory(rm.GetString(Connection.Factory));
}

Assembly GetAssemblyByName(string name)
{
    var Myassembly = AppDomain.CurrentDomain.GetAssemblies().
           SingleOrDefault(assembly => assembly.GetName().Name == name);
    return Myassembly;
}

暫無
暫無

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

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