[英]ConnectionString for assemblies
我有一個網站,其web.config中列出了一個連接字符串。 連接字符串由“發布”功能更改,以便它可以引用開發數據庫,直到它被引用,當它引用單獨的發布數據庫時。
但是,該網站通過一些程序集訪問數據庫。 它們是類庫,因此它們無法發布,至少就我所知。 我讀到web.config會覆蓋app.config連接字符串,但似乎沒有發生。
每當我發布發布站點引用開發數據庫時,除非我更改程序集app.config文件以引用發布數據庫。
我不想每次都記得那樣做。 我該如何處理?
你有兩個問題:
1.如何記住每次發布時發布正確的設置:
部署此類設置的一種方法是在Visual Studio中使用web.config轉換。 這很容易設置,這意味着您不必記住每次發布時都更新設置。
除了調試和發布環境,您還可以為“UAT”,“Staging”,“Beta”或您可能需要的任何其他配置創建轉換。
例如,以下是Release環境的轉換:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>
在上面,您將看到Release模式的轉換設置了MyDB連接字符串的屬性(xdt:Transform =“SetAttributes”),從編譯部分刪除了debug屬性,並用新版本替換了customErrors部分。
這是一種簡單但非常強大的技術。
2.如何讓程序集在web.config中獲取設置
如果您的庫是以通常的方式編寫的,那么它們應該只需訪問[Web] ConfigurationManager.ConnectionStrings屬性來檢索它們的連接字符串。 就像@Bob Horn說的那樣,他們應該從主機進程的配置文件中獲取設置(在這種情況下是你的web應用程序的web.config)。
但是,有時您可能會發現某個庫正在從項目中的.Settings文件中獲取其設置,在這種情況下,事情變得更復雜一些。 您需要將app.config的settings部分復制到web.config中。 (您也可以使用上述變換技術執行此操作。)
如果您可以訪問其他程序集的源代碼,請找到檢索連接字符串的代碼部分。 如果它沒有訪問ConfigurationManager類,那么這可能解釋了為什么它沒有獲取web.config文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.