簡體   English   中英

程序集的ConnectionString

[英]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.

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