2009-10-20 70 views
0

嗨,大家好,IIS 6〜7讓我害怕web.configs的

我們有三個服務器上運行的混合開發環境:贏服務器2003 & 2008,IIS 7 & IIS 6,ASP.NET 2.0 & ASP.NET 3.5。以前,所有三臺服務器都是Server 03/IIS6/ASP.NET 2.0,但是隨着這一新的變化,我發現將任何應用程序從服務器推送/移動到服務器始終是一種可怕的體驗,因爲總會有各種各樣的問題從服務器到服務器的web.config。我曾經認爲自己是一個有信心的ASP.NET開發人員,但現在我很害怕每天上班。

我一直使用的VS生成對我來說,贏2003/ASP.NET 2.0服務器上的web.configs。我們的web.configs都不是「leet」,雖然我們使用ScriptManager和UpdatePanel,但它們都是正常的。

要獲得通過,作爲一個臨時的解決辦法,我必須記住的是,當項目被移動/測試/部署,從來沒有移動或覆蓋任何web.configs,事情會比較混亂非常快。我已經嘗試過使用新的IIS7工具「管理」like suggested here我的web.configs,但即使這樣也無法一直工作。

我能在這裏做什麼,發生了什麼?是否有一個標準的web.config可以在所有服務器上運行並執行UpdatePanel和ScriptManager?

[編輯問題]

+0

我想你只是機槍發射了十幾個不同的問題成爲一個SO問題。深吸一口氣,一次解決一個問題。把這些問題中的每一個都變成一個單獨的SO問題,@psasik是正確的,在你理解了發生的事情後,恐懼會消失。 – Brandon 2009-10-20 15:45:20

+0

我一直害怕web.config。 – 2009-10-29 13:38:29

回答

9

由於IIS6是基線安裝應用程序時,你應該確保在運行IIS7下的「經典」模式下的應用。這使得配置與IIS6框相同。這是我們現在運行我們的Web應用程序的方式,直到我們完全遷移到100%IIS7服務器環境,並且我們在部署/運行時沒有任何問題。

要做到這一點,您可以選擇在IIS7自帶的「Classic .NET AppPool」下運行您的應用程序,或者假設您創建了自己的自定義應用程序池,請確保設置「Managed Pipeline Mode 「轉換爲應用程序池的」高級設置「對話框下的」經典「。

+0

我試過了,它沒有工作。我最終做的是洗牌多個web.configs。 – 2009-11-16 17:54:24

+0

你將要定義「沒有工作」,因爲我做的這幾種環境(包括生產的),所以我知道一個事實,它的工作。這正是爲什麼IIS7中存在「Classic」模式選項的原因。如果您提供更多信息,我會很樂意嘗試提供幫助。 – 2009-11-16 18:48:18

+0

這是很久以前的...問題是不同的服務器盒,IIS版本和程序集;結果每個盒子都需要一個單獨的配置。但是,我現在用的每一天你的建議在辦公室裏,「經典.net應用程序池」一路走好! – 2010-05-18 10:22:28

1

知識是克服恐懼的好方法。弄清楚發生了什麼事(你現在正在抓住吸管),恐懼就會消失。

這是我的猜測,如果你重構使用配置文件中的代碼,你會做的更好。那裏的懶散可以明確解釋你的怪異和不一致之處。如果代碼運行不正常,則無法使用配置設置進行控制。

2

您可以通過更改過程在IIS6下使用經典模式。這實際上很簡單,它應該工作。

另一種方法是,以自動化的部署過程,並擁有它,這樣它部署正確的web.config文件到服務器時,你需要更新你的應用程序。

4

你應該認真看web deployment projects爲Visual Studio 2008

這是一個官方的附加爲Visual Studio,讓你叫web部署項目中的新項目類型。最有用的功能之一是能夠執行web.config搜索/替換以及預編譯的網站或Web應用程序項目的構建。

在你的情況,你會做的是建立在Visual Studio中的解決方案配置您的所有目標Web服務器。然後,您將爲您的Web應用程序創建一個Web部署項目。在部署項目的屬性中,您可以告訴它您希望如何編譯項目以及要爲每個解決方案配置使用哪些web.config替換項。

最終結果應該是您可以打開Visual Studio,選擇解決方案配置,構建部署項目。構建將創建一個包含正確配置的web.config文件的所需文件夾。然後,您只需將該文件夾複製到您的服務器上,即可開始運行。

最重要的是,由於不同的配置文件都存儲在項目中,因此它可以讓您在一個位置管理您的配置並將其全部檢入到源代碼管理中。

請注意,在Visual Studio 2010中沒有等價物。相反,VS 2010有一個全新的部署機制,稱爲MSDeploy。 2010年,您不需要爲部署項目提供單獨的項目,而MSDeploy則可以進一步實現更多功能,從而允許您打包SQL數據庫和其他內容。

2

如果運行使用的是經典的.NET應用程序池的IIS 7的網站,那麼配置文件將匹配你會用什麼樣的IIS 6,這可能是最簡單的事,直到你準備好遷移一切IIS 7.

相關問題