2010-10-09 67 views
1

我正在使用VSTS 2010 + ASP.Net + C#4.0來學習WCF應用程序的其他人的代碼。除了Web.Config之外,我還發現了Web.Debug.config和Web.Release.config。我搜索了Web.Config的內容,但找不到任何對Web.Debug.config和Web.Release.config的引用。但是,在VSTS 2010 IDE解決方案資源管理器中,我發現Web.Config指向Web.Debug.config和Web.Release.config的箭頭 - 看起來有引用關係。這讓我感到困惑。ASP.Net中的web.config問題

在所有3的配置文件中,有具有不同值的相同的項目,例如,在web.config中,有以這種方式定義的連接字符串DBConnectinString,

<connectionStrings> 
    <add name="DBConnectinString" connectionString="data Source=10.10.10.123;uid=foo;pwd=foo;database=FOO" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

而在Web.Debug.config ,有幾乎與不同的值相同的方式定義的連接字符串DBConnectinString,

<connectionStrings> 
    <add name="DBConnectinString" connectionString="data Source=10.10.10.124;uid=foo;pwd=foo;database=FOO" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

我quesiton是,

  1. Web.Config和Web.Debug.config/Web.Release.config之間的關係是什麼?
  2. 爲什麼在Web.Config和Web.Debug.config/Web.Release.config中使用不同的值定義相同的項目?

回答

1

這是Visual Studio 2010中的新功能。它允許您爲您創建不同的配置文件來構建配置方案。因此,當您以調試模式構建時,它將包含Web.Debug.Config文件,這與構建發佈版時的文件相同。

這使您可以爲您的數據庫維護不同的配置 - 一個用於您的開發環境和您的實時環境。

希望有幫助!

+0

謝謝。還有兩個問題,1. Web.Debug.Config中定義的連接字符串的優先級高於web.config(即將覆蓋web.config中定義的值)? 2.在運行時,例如IIS 7.0,它將使用web.config和Web.Debug.Config(我們是否需要將兩個配置文件都部署到IIS)?或者只是使用web.config? – George2 2010-10-09 17:18:47

+1

它僅取決於您使用的構建配置。您可以查看這些鏈接:http://stackoverflow.com/questions/2791236/what-is-the-web-debug-config-and-web-release-config-file-for http://blogs.msdn.com /b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx您必須僅部署Web.config文件。 VIsual Studio已經採用了正確的版本,並將其替換爲您的版本。 – anthares 2010-10-09 17:20:38

+1

IIS將只使用「Web.config」,其他都不會應用。我認爲你的第一個問題是正確的,但有人應該證實。 – Gup3rSuR4c 2010-10-09 17:21:04

2

您對不同的設置有不同的配置文件。考慮將Debug作爲本地環境設置,例如連接到testserver,調試變量等。Release設置將包含像生產服務器的connectionstring這樣的設置。

在頂部欄中,運行調試旁應該是一個下拉菜單,其中包含所有可用的設置。你也可以添加一些。

這個設置是一鍵式部署,如新WebDeploy與VS2010

編輯有用:
此鏈接How to use web.config transforms to replace appSettings and connectionStrings?會顯示出基本的演練有關的web.config轉換

+0

謝謝。還有兩個問題,1. Web.Debug.Config中定義的連接字符串的優先級高於web.config(即將覆蓋web.config中定義的值)? 2.在運行時,例如IIS 7.0,它將使用web.config和Web.Debug.Config(我們是否需要將兩個配置文件都部署到IIS)?或者只是使用web.config? – George2 2010-10-09 17:21:06

+0

對於Web部署,我想你是指當我們爲WCF項目選擇「發佈」時?如果是這樣,從發佈對話框,如果我選擇WebDeploy作爲發佈方法,我看不到任何選項使用Web.Debug.Config或Web.Debug.Release。任何意見? – George2 2010-10-09 17:25:29

+0

另一個困惑是我在web.debug.config上找到了一個名爲「配置xmlns」的項:xdt =「http://schemas.microsoft.com/XML-Document-Transform,這是什麼意思? – George2 2010-10-09 17:33:37