我有一個ASP.NET Web應用程序項目,通過實體框架連接到遠程數據庫。在調試期間(例如在本地計算機上運行項目),數據庫的IP地址與發佈期間不同(例如,將項目上傳到我的web服務器並從瀏覽器運行)。到現在爲止,我總是手動更改Web.config文件中的數據庫連接字符串,以在兩者之間切換(基本上,我必須連接字符串,一個名爲「Debug」,一個名爲「Release」,每當我部署)。Web.config構建與版本轉換不起作用
現在我只注意到應該可以通過Web.config Transformation Syntax自動發生這種情況,您將修改的連接字符串放入Web.Release.config版本中,然後應該在釋放配置下構建DLL時使用該連接字符串。
但是它似乎並沒有爲我工作...
這是我經常Web.config文件中的相關部分(持有本地使用調試連接字符串):
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<!-- Debug connection string. Release connection string is in Web.Release.config file -->
<add name="DatabaseEntities" connectionString="A" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
這裏是Web.Release.config文件,其中根據本實施例應與「B」取代「DatabaseEntities」連接字符串「A」,如果DLL是下釋放模式:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- Replace the DatabaseEntities connection string with the Release version (local IP address) -->
<connectionStrings>
<add name="DatabaseEntities"
connectionString="B"
xdt:Transform="Replace" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
(顯然「A」和「B」只是我的真實連接字符串的佔位符)
當我調試應用程序時(例如,只需按F5)使用默認的Web.config,我可以訪問數據庫。然後我通過Configuration Manager將構建配置更改爲Release。解決方案中的所有項目均設置爲「發佈」配置。然後我構建解決方案(只需通過Build或甚至通過完整的重建(例如Clean,Rebuild))。我將新建的DLL上傳到網絡服務器,以及Web.config和Web.Release.config文件,當我嘗試訪問數據庫時我無法訪問數據庫,它仍然嘗試通過調試IP地址訪問數據庫因此找不到它...
看來Web.Release.config文件被完全忽略,或者至少連接字符串沒有被替換。
我在做什麼錯?轉換語法是錯誤的嗎?我沒有正確地在發佈模式下構建應用程序嗎?
感謝您的幫助......
這有時會有點棘手,如果你得到一個設置錯誤,它不會工作。如果您可以添加配置管理器的屏幕截圖,我們可能會看到您忽略的一些內容。 –
這篇文章幫助了我:[http://stackoverflow.com/questions/3305096/how-can-i-use-web-debug-config-in-the-built-in-visual-studio-debugger-server] [1] [1]:http://stackoverflow.com/questions/3305096/how-can-i-use-web-debug-config-in-the-built-in-visual-studio -debugger-server –