基于.NET Framework 4.0的解決方案部署
VS 2010發(fā)布之后,隨著而來的框架版本也升級到了.NET Framework 4.0。我相信很多朋友已經(jīng)在用了吧。這一篇文章總結(jié)了如何基于.NET Framework 4.0,進(jìn)行解決方案部署。
之所以要單獨(dú)寫一下,是因?yàn)榇_實(shí)這個(gè)版本與之前的.NET Framework 2.0,3.0,3.5是不一樣的。我們自己在用的時(shí)候也摸索了一些時(shí)間。所以總結(jié)出來給大家參考參考吧,以免多走彎路。
重點(diǎn)事項(xiàng):
- .NET Framework 4與之前的版本是可以并行的,他們并不互相干擾。也就是說,你不必在安裝.NET Framework 4之前安裝其他的任何一個(gè)版本。(前提是,你只是想運(yùn)行.NET Framework 4的程序)
- 令很多朋友最感疑惑的是,如果安裝了.NET Framework 4,那么之前的軟件能否運(yùn)行(例如基于.NET Framework 2)呢?答案是:不能
- 因?yàn)檫@種并行的情況,所以在服務(wù)端要特別注意,設(shè)置ASP.NET引擎的版本。
- .NET Framework 4 所支持的客戶端操作系統(tǒng)最低是Windows XP,服務(wù)器操作系統(tǒng)是Windows Server 2003。之前的Windows 2000甚至更高版本全部不受支持。
- .NET Framework 4的網(wǎng)站無法部署在Windows XP中。換而言之,Windows XP只能作為客戶端,因?yàn)閄P帶的IIS 是5.1,而.NET Framework 4所要求的IIS版本最低是IIS 6.
部署提示:
1.首先下載有關(guān)的安裝程序
NET_Framework_4.0installer.rar
這是我整理好的四個(gè)軟件(大致一共10MB),分別如下
- WindowsInstaller-KB893803-v2-x86(3.1).exe 如果你的機(jī)器(不管是服務(wù)器還是客戶端)什么都沒有安裝過,那么必須先裝這個(gè)installer 3.1才可以安裝Framework
- wic_x86_enu.exe 如果你的機(jī)器是XP(通常是指客戶端),那么在安裝.NET Framework 4之前需要安裝這個(gè)WIC(Windows Image Component),不要問我這是干啥用的,我也不知道,呵呵
- ReportViewer2010.exe 如果你的應(yīng)用程序使用了報(bào)表查看器,則需要安裝這個(gè)
- en_.net_framework_4_full_web_installer_x86_x64_ia64_516530.exe 這是在線安裝.NET Framework 4的一個(gè)引導(dǎo)程序。你需要確保網(wǎng)絡(luò)暢通。
當(dāng)然,如果你希望預(yù)先下載好Framework 安裝包(例如你的客戶場景是沒有辦法連接到網(wǎng)絡(luò)),那么請繼續(xù)下面的操作
- 如果你想要下載完整的安裝包,則訪問這里http://www.microsoft.com/downloads/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en
- 大致是48MB的安裝包,應(yīng)該還是可以接受的。不像原先.NET Framework 3.5那么恐怖(那時(shí)好像將近200MB,客戶直接就崩潰了)
- 如果你想要下載.NET Framework 4 Client Profile ,則訪問這里 http://www.microsoft.com/downloads/details.aspx?FamilyID=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&displaylang=en
- 大致是41MB的安裝包,與Full相差大致7MB,我個(gè)人覺得這就沒有啥優(yōu)勢了。而且選用了Client Profile的話,有好些個(gè)功能都不能用。其實(shí)更關(guān)鍵在于你不知道哪些能用,哪些不能用(確實(shí)有一些文檔介紹他們的區(qū)別,但誰有那閑工夫去記住那么多區(qū)別呢)。所以,我們?nèi)坎捎肍ull,免得麻煩。
2.服務(wù)器端的一般部署過程
客戶端部署相對很簡單,你只要把上面的一些軟件安裝好,基本上就不會(huì)有什么問題,程序能運(yùn)行起來。但服務(wù)器端可就沒有這么容易了。下面就假設(shè)你有一個(gè)Web Application需要部署
首先,如何打包這個(gè)Web Application呢?這個(gè)方面,VS2010做了一些不錯(cuò)的改進(jìn),它可以直接發(fā)布,更可以打包成一個(gè)所謂的Package,如下面的菜單
打包好之后會(huì)在項(xiàng)目的Obj目錄下面,Debug目錄下面,再創(chuàng)建一個(gè)Package目錄,你可以看到下面的一些文件
其次,如何在服務(wù)器端部署這個(gè)Web Application呢?
你需要將上面這個(gè)Package目錄全部復(fù)制,然后發(fā)送給服務(wù)器管理員。那么服務(wù)器管理員要怎么將這個(gè)Application部署起來呢?他有幾種方式。
第一種方式,使用MS Deploy工具。
http://www./download/webdeploy
這個(gè)工具是微軟提供出來給IIS 6和IIS 7用的,可以很方便地進(jìn)行應(yīng)用程序部署。你可以通過上面的地址下載到。(值得一提的是,這個(gè)工具安裝之前需要當(dāng)前服務(wù)器安裝了.NET Framework 2.0 sp1)
如果安裝好了,我們打開IIS 之后會(huì)看到一些小的變化
大家可以看到,現(xiàn)在網(wǎng)站上面多出來一個(gè)“Deploy”的菜單,里面有幾個(gè)菜單項(xiàng),我們現(xiàn)在可以點(diǎn)擊“Import Application”
首先,我們需要指定那個(gè)部署包的位置,是那個(gè)zip文件
【注意】這里可以修改連接字符串
【注意】因?yàn)闄z測到我們是.NET Framework 4的Web Application,所以會(huì)提示將Application Pool選擇為.NET 4.0的,我們當(dāng)然毫不猶豫地點(diǎn)擊“yes”
很快就安裝好了。它到底做了什么呢?其實(shí)它會(huì)把文件復(fù)制到wwwroot里面來
但是,這里需要注意的是,它是隨機(jī)選擇了一個(gè).NET Framework 4.0 的Application Pool, 例如在我的機(jī)器上是這樣的
有的時(shí)候,我們可能會(huì)發(fā)現(xiàn)程序運(yùn)行不起來,例如
經(jīng)驗(yàn)告訴我們,凡是503錯(cuò)誤,多半是與應(yīng)用程序池有關(guān)系。
我嘗試重啟這個(gè)程序池,問題依舊
然后,我發(fā)現(xiàn)這個(gè)程序池有些特殊之處在于它的Managed Pipleline Mode是Integrated,是不是這個(gè)有問題呢?
我嘗試選擇了一個(gè)Managed Pipleline Mode為Classic的應(yīng)用程序池,例如
重新刷新一下就可以正常運(yùn)行我的應(yīng)用程序了
到這里,我們就完成了服務(wù)器端應(yīng)用程序的部署。這個(gè)演練中,我們使用了MS Deploy工具。但事實(shí)上,不用工具也是一模一樣可以做到的。只要記住下面兩點(diǎn)
1. 應(yīng)用程序池要基于.NET Framework 4
2. 應(yīng)用程序池的Managed Pipleline Mode要選擇為Classic
最后,還有一個(gè)可能會(huì)遇到的問題,就是如果你的應(yīng)用程序會(huì)連接到數(shù)據(jù)庫,而且數(shù)據(jù)庫連接字符串是像下面這樣寫的
Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True
那么,大家要知道的一個(gè)情況是,因?yàn)槟闶荌ntegrated security=true,所以最后訪問數(shù)據(jù)庫時(shí)所使用的身份是應(yīng)用程序池的標(biāo)識。那么,很顯然地,你需要確保這個(gè)標(biāo)識有訪問數(shù)據(jù)庫的權(quán)限。
【注意】如果是訪問本地的服務(wù)器和數(shù)據(jù)庫,為簡單起見,你可以直接設(shè)置為LocalSystem。這個(gè)特殊賬號是肯定可以訪問數(shù)據(jù)庫的。
當(dāng)然,更加嚴(yán)謹(jǐn)?shù)淖龇?,是指定一個(gè)特定的賬號,這個(gè)賬號被授予了特定數(shù)據(jù)庫的訪問權(quán)限。