电竞比分网-中国电竞赛事及体育赛事平台

分享

微軟ASP.NET站點(diǎn)部署指南(5):部署到IIS上作為測(cè)試環(huán)境

 ylzrx 2012-01-09

1.  綜述

開(kāi)發(fā)程序的時(shí)候,通常我們是在Visual Studio 里測(cè)試,默認(rèn)使用的是Visual Studio Development Server(Cassini),使用這個(gè)可以讓我們開(kāi)發(fā)測(cè)試工作更容易,但是在IIS上可能不一定能夠正常工作。所以,結(jié)果可能是在Visual Studio 里運(yùn)行正常,但是一旦部署到IIS上就會(huì)出錯(cuò)。

你可以通過(guò)下面一些方法來(lái)測(cè)試確保你的程序沒(méi)問(wèn)題:

  1. 開(kāi)發(fā)的時(shí)候,使用IIS Express或者正式版IIS代替默認(rèn)的Visual Studio Development Server來(lái)測(cè)試程序,這樣可以更能確保在IIS下少出問(wèn)題。但是這個(gè)方法不能測(cè)試你的部署流程是否正確,或者驗(yàn)證部署結(jié)構(gòu)。
  2. 部署程序到你的開(kāi)發(fā)機(jī)上的IIS,然后用同樣的步驟部署到生產(chǎn)環(huán)境,這樣驗(yàn)證你的部署流程和是否能在生產(chǎn)環(huán)境運(yùn)行成功。
  3. 部署到和生產(chǎn)環(huán)境接近的測(cè)試環(huán)境,由于生產(chǎn)環(huán)境是第三方的提供商,所以最理想的測(cè)試環(huán)境就是提供商開(kāi)放第二個(gè)賬戶(僅用于測(cè)試目的),這樣就可以和正式的生產(chǎn)環(huán)境使用一樣的部署步驟了。

本章節(jié)演示的是第二種方式,第三種方式可以在第七章尾部講到,另外本章節(jié)的底部有第一種方式需要用的資源連接地址。

 

提醒:如果根據(jù)本章節(jié)所做的操作出現(xiàn)錯(cuò)誤信息或一些功能不正常的話,請(qǐng)務(wù)必check asp.net/visual-studio-2010/tutorials/asp-net-web-deployment-troubleshooting" target="_blank">Troubleshooting頁(yè)面。

2.  配置程序運(yùn)行在Medium Trust上

安裝IIS和部署之前,我們需要修改Web.config文件以便配置更能接近共享主機(jī)環(huán)境。主機(jī)提供商通常會(huì)讓你的程序運(yùn)行在medium trust級(jí)別上,那就是說(shuō)有些事情是不允許做的,比如你不能訪問(wèn)注冊(cè)表或者你程序之外的目錄讀寫文件。本機(jī)默認(rèn)情況下是運(yùn)行在high trust上,也就是有些你可以做的事情在生產(chǎn)環(huán)境上可能做不到了。因此,為了確保部署到生產(chǎn)環(huán)境沒(méi)問(wèn)題,需要將測(cè)試環(huán)境的運(yùn)行配置也改成medium trust。

 

Web.config文件里,在system.web元素節(jié)點(diǎn)里添加<trust>元素,像下面一樣:

	<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium"/>
    <!-- Settings -->
  </system.web>
</configuration>

 

現(xiàn)在程序可以運(yùn)行在medium trust上了,這樣你可以盡早發(fā)現(xiàn)需要high trust才能運(yùn)行的錯(cuò)誤了。

3.  安裝IIS和Web Deploy

你必須先安裝IIS和Web Deploy 才能將程序部署到你開(kāi)發(fā)機(jī)的IIS上。因?yàn)槟J(rèn)Windows 7是不安裝這些組件的,如果你已經(jīng)都安裝了,那請(qǐng)忽略這個(gè)section。

強(qiáng)烈推薦使用Web Platform Installer安裝IIS和Web Deploy,,因?yàn)闀?huì)自動(dòng)安裝IIS的推薦配置和自動(dòng)安裝IIS和Web Deploy所需要的依賴軟件。

使用Web Platform Installer安裝IIS和Web Deploy,請(qǐng)使用下面的連接,如果你曾經(jīng)安裝過(guò)其中的一種或者是相關(guān)的依賴軟件,那Web Platform Installer只會(huì)安裝剩余的部分。

4.  設(shè)置默認(rèn)的應(yīng)用程序池為.Net4

安裝IIS以后,運(yùn)氣IIS管理器(開(kāi)始->運(yùn)行,輸入inetmgr,回車),確保默認(rèn)程序池使用的.NET Framework版本是4。

連接Connections)面板,展開(kāi)server節(jié)點(diǎn)選擇應(yīng)用程序池Application Pools),在右邊的面板里,查看DefaultAppPool使用的.NET framework版本是否是v4.0,如果是,請(qǐng)忽略此section。

 

\

如果你只能看到2個(gè)應(yīng)用程序池,并且都是.NET Framework 2.0的話,你需要在IIS里安裝ASP.NET 4,然后再配置IIS才能使用。

打開(kāi)一個(gè)command prompt窗口,右鍵選擇以管理員身份運(yùn)行(Run as Administrator),然后運(yùn)行aspnet_regiis.exe來(lái)安裝ASP.NET 4到IIS里。使用如下命令:

	cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

\

上面的命名將會(huì)為.NET Framework 4創(chuàng)建2個(gè)應(yīng)用程序池,但默認(rèn)版本還是v2.0的。因?yàn)樾枰獙⒊绦虿渴鸬?NET 4的應(yīng)用程序池上,所以需要修改它們的版本為NET 4。

重新運(yùn)行IIS管理器,點(diǎn)擊應(yīng)用程序池,重新查看右邊的面板,點(diǎn)擊DefaultAppPool,然后在操作面板Actions)里點(diǎn)擊基本設(shè)置Basic Settings)。

 

\

編輯應(yīng)用程序池Edit Application Pool)對(duì)話框里,將.NET Framework version里的項(xiàng)修改成.NET Framework v4.0.30319,然后點(diǎn)擊確定OK)。

 

\

現(xiàn)在就可以將程序發(fā)布到IIS上了。

5.  發(fā)布到IIS

使用Visual Studio 2010和Web Deploy部署有幾種方式:

  • 使用Visual Studio one-click發(fā)布
  • 創(chuàng)建部署包,然后使用IIS Manager 管理控制臺(tái)安裝,部署包是一個(gè).zip文件,包含了所有需要部署到IIS上的文件和元數(shù)據(jù)
  • 創(chuàng)建部署包,然后使用命令行安裝

前面的章節(jié)都提到了這三種方式的Visual Studio自動(dòng)部署設(shè)置方式。本章節(jié)用的是第一種。更多使用部署包的信息,可以查看ASP.NET Deployment Content Map。

發(fā)布之前,確保你的Visual Studio是運(yùn)行在管理員模式下(開(kāi)始菜單,右鍵Visual Studio 2010,選擇以管理員身份運(yùn)行)。

改變當(dāng)前active的build配置是Test,你可以從工具欄選擇(如下圖),或者從編譯(Build菜單里的配置管理器Configuration Manager)里選擇。

\

Solution Explorer里,右鍵ContosoUniversity項(xiàng)目,選擇發(fā)布(Publish),彈出Publish Web對(duì)話框。

 

\

設(shè)置profile名稱為"Test",如果沒(méi)看到文本框,而是看到下拉菜單就選擇new ,然后輸入新名稱。

Service URL里輸入“l(fā)ocalhost”

Site/application里輸入"Default Web Site/ContosoUniversity"

選擇上Mark as IIS application on destination。(有些情況不需要部署到IIS上,例如項(xiàng)目本身就不是個(gè)web程序,它僅僅包含了一些圖片,XML文件等,這種情況就不用選擇了,以便不建立IIS程序。)

 

\

點(diǎn)擊發(fā)布(Publish),如果你收到如下信息框,請(qǐng)重新以管理員身份運(yùn)行Visual Studio。

 

\

如果你關(guān)掉Visual Studio,例如以后的章節(jié)來(lái)重新打開(kāi)它再發(fā)布的時(shí)候,請(qǐng)務(wù)必選擇以管理員身份運(yùn)行,如果不是管理員身份,發(fā)布程序不會(huì)提示出錯(cuò)框而是嘗試發(fā)布,有時(shí)候可能會(huì)提示一個(gè)沒(méi)有權(quán)限的錯(cuò)誤信息。

如果是運(yùn)行在管理員模式下,Output窗口會(huì)顯示編譯和發(fā)布成功的信息。

 

\

運(yùn)行IIS管理器,在連接(Connections)面板里,你可以在默認(rèn)站點(diǎn)(Default Web Site)下看到一個(gè)名字為ContosoUniversity的應(yīng)用程序,如果之前都打開(kāi)了IIS,你點(diǎn)擊刷新(Refresh)。在操作(Actions)面板點(diǎn)擊瀏覽(Browse *:80 (http))來(lái)驗(yàn)證是否可以打開(kāi)你的首頁(yè)。

 

\

不出錯(cuò)的話,瀏覽器就會(huì)顯示Contoso University項(xiàng)目的首頁(yè)了。

 

\

6.  在測(cè)試環(huán)境中測(cè)試

打開(kāi)瀏覽器訪問(wèn)http://localhost/ContosoUniversity,重新運(yùn)行首頁(yè),可以看到頁(yè)面頂部顯示的標(biāo)示符是"(Test)"而不是"(Dev)"了,這就意味著Web.config的transformation結(jié)果是正確的。

 

\

打開(kāi)Students頁(yè)面驗(yàn)證部署的數(shù)據(jù)庫(kù)里布包含任何students:

 

\

打開(kāi)Instructors頁(yè)面驗(yàn)證這些數(shù)據(jù)依然存在于數(shù)據(jù)庫(kù)中:

 

\

Students菜單里選擇Add Students,添加一個(gè)student,然后可以看到Students 頁(yè)面顯示了一個(gè)student,說(shuō)明已經(jīng)成功保存到數(shù)據(jù)庫(kù)里了:

 

\

 

\

Courses菜單,選擇Update Credits,因?yàn)樵擁?yè)面需要administrator權(quán)限,所以跳轉(zhuǎn)到了Log In頁(yè),輸入administrator賬戶信息("admin" 和 "Pas$w0rd")登錄以后, Update Credits就顯示了,這就驗(yàn)證了上個(gè)章節(jié)創(chuàng)建的administrator賬戶已經(jīng)正確的部署到測(cè)試環(huán)境了。

 

\

 

\

檢查Elmah文件夾是否存在并且值包含一個(gè)placeholder文件,這就驗(yàn)證了前面章節(jié)設(shè)置的忽略部署該文件夾的XML文件執(zhí)行成功了。

\

打開(kāi)C:\inetpub\wwwroot\ContosoUniversity 目錄下的Web.config文件驗(yàn)證Code First數(shù)據(jù)庫(kù)初始化參數(shù)值為Disabled:

 

\

現(xiàn)在,你成功將程序部署到你開(kāi)發(fā)機(jī)的IIS上并且測(cè)試了,這驗(yàn)證了部署流程不僅僅只是copy程序內(nèi)容(也可以排除不需要部署的內(nèi)容了),另外Web Deploy也成功配置了IIS站點(diǎn)。下一章節(jié)你將測(cè)試另外一個(gè)還沒(méi)搞定的部署任務(wù):設(shè)置Elmah文件夾的寫權(quán)限。

7.  更多信息

關(guān)于在Visual Studio 里運(yùn)行IIS或IIS Express的更多信息,請(qǐng)查看下面列出的資源:

該帖提供了很多例子解釋為什么使用Visual Studio Development Server (Cassini)測(cè)試不如使用IIS Express測(cè)試可靠,以及為什么在IIS Express里測(cè)試沒(méi)有在IIS正式版里測(cè)試可靠的原因.

關(guān)于Visual Studio 2010里的自動(dòng)化部署工具以及關(guān)于one-click發(fā)布和部署包更多的信息,請(qǐng)?jiān)L問(wèn):ASP.NET Web Application Project Deployment Overview。

關(guān)于主機(jī)提供商將程序運(yùn)行在medium trust有可能引起的問(wèn)題,請(qǐng)?jiān)L問(wèn):Hosting ASP.NET Applications in Medium Trust

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多