寫在前面:
Windows Server 2008 R2發布有一段時間了,我于2009年11月份開始體驗R2,整體感覺非常不錯,建議有實驗條件的開發人員都體驗一下,即使是在虛擬機中。Windows Server 2008 R2中IIS的版本也升級到了7.5,在平時工作學習中經常遇到IIS出現各種各樣的問題,歸根到底是對IIS的底層實現機理不甚了解,決定有體系的學習一下。本人Windows Server經驗薄弱,措辭不當之處請廣大同行前輩多多指教。
本系列所有示例代碼均在 Windows Server 2008 R2 DataCenter(IIS 7.5) + Visual Studio 2010 Ultimate RC 下測試通過。
一、IIS 7.5概述
園子里有朋友介紹了IIS 7.5的新特性,很全面,翻譯的很好。由于寫的較早,當時還只是Windows Server 2008 R2 Beta,現在我就用Windows Server 2008 R2 DataCenter正式版來適當補充一下吧:)
雖然寫的是IIS7.0,但是同樣適用于IIS7.5.
在【開始】--【運行】,輸入:inetmgr,打開IIS管理器:
可以看到,雖然顯示的是Internet Information Services 7,但是在關于窗口看以看出明確的版本號:7.5.7600.16385
IIS 7.5是對IIS7的一次升級,是IIS的最新版本,園子里也有朋友做了介紹,這里只列了個綱要:
-
集成擴展(Integrated extensions)
- Web分布式創作版本管理和文件傳輸服務(WebDAV and FTP)
- 請求過濾(Request Filtering)
- 管理員維護模塊(Administration Pack modules)
-
管理功能的增強(Management enhancements)
- 最佳體驗分析器(Best Practices Analyzer)
- Windows PowerShell支持和擴展命令(Windows PowerShell™ Provider and cmdlets)
- 可配置的日志記錄與跟蹤(Configuration logging and tracing)
-
應用程序宿主增強(Application hosting enhancements)
- 服務增強(Service hardening)
- 托管的服務賬戶?(Managed service accounts)
- 可在Web核心版本中宿主?(Hostable Web Core)
- 針對于通用網關接口的失敗請求的跟蹤(Failed Request Tracing for FastCGI)
- 對服務器核心版本的.NET功能增強(Enhancements to .NET support on Server Core)
注:標紅色的我認為翻譯的有點問題
二、使用PowerShell管理IIS 7.5
PowerShell為IIS7.0、IIS7.5提供了擴展命令,可以像訪問文件系統一樣訪問IIS站點。
1、打開Windows PowerShell Modules:
2、輸入:Set-Location IIS:\,就進入了IIS的"驅動器":
3、輸入:Get-ChildItem來查看IIS下的項:
4、查看當前的所有站點:
5、下面我們用PowerShell將一個ASP.NET網站發布到IIS7.5中:
1)建立一個ASP.NET網站:
2)發布到IIS7.5:
我們建立了一個端口號為82的網站:TestSite
現在來瀏覽一下剛剛創建的網站:
可以輸入:Remove-Item TestSite來刪除站點:
PowerShell的功能十分強大,具有很強的靈活性與可擴展性,后面我們會繼續深入學習PowerShell在IIS7.5中的管理方法。
三、使用AppCmd來管理IIS7.5
PowerShell的耀眼光芒使得人們幾乎忘記了另一個隨同IIS7.0發布的命令行管理工具:AppCmd. AppCmd是用于IIS7.0的管理工具,可以完成GUI所能完成的全部工作,提供了更大的靈活性與快捷性。AppCmd默認存放在:%SystemRoot%\System32\inetsrv目錄下,建議將其添加進PATH環境變量,在PowerShell中輸入AppCmd:
下面我們用AppCMD來建立一個網站:
輸入:appcmd add site /name:"AppCmdTest" /bindings:http://localhost:83 /physicalpath:" E:\IIS7.5\SimpleWebSite\WebSiteDemo"
可以看到:
SITE … added
APP…added
VDIR…added
在瀏覽器中打開:
AppCmd也是相當快捷與高效的,那么在實際開發中應該選擇PowerShell還是AppCmd呢?個人感覺AppCmd很小巧,如果是小型應用,需要批量管理IIS7.x,建議用AppCmd;如果項目比較復雜,同時摻雜著跨平臺、跨數據庫的企業級應用,則應該使用PowerShell,因為它更加高效,易于擴展,與微軟的許多服務器產品進行了整合。
四、使用IIS API來管理IIS7.5
從IIS7開始提供了一組全新的、方便使用的、面向對象的API,該API分為兩部分:托管的和本地的。本地API由C++編寫,可以用來開發本地模塊并插入IIS內核。而托管API則可以借助于.NET Framework的優勢來更方便的對IIS7.x進行管理。
下面我們使用Microsoft.Web.Administration(MWA) API來創建一個Web站點,效果與之前用PowerShell和AppCmd的一樣。
1、創建一個控制臺程序,并添加引用:System.Web、Microsoft.Web.Administration
注意要將控制臺項目的.NET Framework版本設置為4.0,不能用Cilent Profile。
2、添加如下代碼:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Web.Administration;
namespace MWADemo
{
class Program
{
static void Main(string[] args)
{
ServerManager sm = new ServerManager();
sm.Sites.Add("MWASite", "http", ":84:localhost", @"E:\IIS7.5\SimpleWebSite\WebSiteDemo");
sm.CommitChanges();
}
}
}
3、F5運行后,在瀏覽器中測試一下:
小結:
本次 主要介紹了IIS7.5的新特性,因為很多朋友已經介紹過,故只提了些綱要。然后分別用PowerShell、AppCMD、MWA API的方式對IIS7.5的站點進行了簡單的管理操作,三者功能都很強大,只是適用場合不同。后續篇章會主要以MWA API和PowerShell來對IIS7.5進行開發與管理,深入學習IIS7.5底層各部件的實現機理。
![]() |
不含病毒。www.avast.com |