2012-12-07 67 views
2

我有一個MVC3 Web應用程序項目,我從Visual Studio 2012開發和發佈。這是最近遷移的VS2010項目。VS2012 WebDeploy發佈中斷Web.Config

我的web.config使用<location inheritInChildApplications="false">標記進行設置,以便在虛擬目錄中運行的子應用程序不會執行設置。

我已經建立了一個WebDeploy發佈配置文件,它在VS2010中完美地工作,但是從VS2012發佈時會中斷我的應用程序。它在結束前面提到的</location>標記之後添加了<connectionStrings>節點,儘管我的<location>節點內已經有<connectionStrings>節點。由於配置文件無效,這會中斷應用程序。

我試過重新創建從頭開始沒有解決問題的配置文件。

基於我所讀到這裏,http://msdn.microsoft.com/en-us/library/dd465337.aspx,取消選中「Use this connection string at runtime」複選框應指示發佈過程添加連接字符串,但無論如何它。

我在想,如果我不使用<location inheritInChildApplications="false">,這不會成爲問題,因爲連接字符串會被添加到正確的位置。

此外,請注意,如果我發佈到文件系統而不是使用WebDeploy,則已發佈的Web.Config已正確創建,並且沒有添加額外的連接字符串節點。

這個問題是否有任何已知的解決方法?

回答

1

正如我懷疑,這個問題是關聯到inheritInChildApplications屬性。這可能是Visual Studio 2012 Web部署中的一個錯誤,即部署過程始終將連接字符串添加到配置文件中,即使您不告訴它。就我而言,它也加入了錯誤的地方,這打破了我的申請。

要解決此問題,我只是停止使用該屬性並使用列出的選項here之一關閉配置繼承。

我現在可以發佈沒有錯誤,但該過程仍然將連接字符串添加到部署的配置文件。令人討厭但不是表演塞。

相關問題