Microsoft_IIS

**網際網路資訊服務**（英語：**Internet Information Services**，簡稱 **IIS**），在中國大陸被稱為 **Internet 信息服務**，是由微軟公司提供的基於運行 Microsoft Windows 的網際網路基本服務。最初是 Windows NT 的可選包，隨後成為 Windows 2000、Windows XP Professional 和 Windows Server 2003 的可選元件，但在 Windows XP/Vista/7/8/10 家用版本上並沒有 IIS。

IIS 包括 FTP/FTPS、NNTP、和 HTTP/HTTPS、SMTP 等服務。
IIS 可設定的內容包括：虛擬目錄及存取權限、預設檔案名稱、以及是否允許瀏覽目錄。

## 各種版本

### IIS 5

IIS 即為 InetInfo.exe 處理程序。aspx 頁面對映到該處理程序的 aspnet ISAPI.DLL 上。對 aspx 頁面，aspnet ISAPI.DLL 建立 aspnet\_wp.exe 工作者處理程序（Worker Process）。IIS 處理程序與工作者處理程序之間的通信，採用命名管道。

工作者處理程序初始化時載入 CLR。一台伺服器只執行一個 aspnet\_wp.exe 工作者處理程序處理程序。每個 ASP.NET 應用程式在工作者處理程序中有自己單獨的 AppDomain。AppDomain 有自己單獨的 context，實現了安全隔離。

### IIS 6

IIS 6 伺服器通過執行於核心態的協定偵聽器組件 Http.sys 來接受客戶的 http 請求。然後檢視該請求的 Application 屬於哪個套用池，把請求發到相應的套用池的佇列中。 如果該套用池不存在，則建立它。套用池通過工作處理程序隔離來分割 ASP.NET 應用程式，防止彼此間的干擾。

每個套用池對應一個執行在使用者態下的 w3wp.exe 工作者處理程序。在 IIS Metabase 中維護著 Application Pool 和 worker process 的 Mapping。工作者處理程序初始化時，載入 ASP.NET ISAPI DLL，該 DLL 載入 CLR。WAS（Web Administrative service）負責排程工作者處理程序將執行套用池佇列中哪個 http 請求。

### IIS 7

IIS 7 伺服器通過執行於核心態的組件 Http.sys（HTTP 協定堆疊）來接受客戶的 http 請求。再通過 Process（Web Process Activation service，WAS）與 WWW Publishing Service（W3SVC）兩個使用者態的系統服務來查詢、排程對應的應用程式池（Application Pool）開啟 W3WP.exe 工作者處理程序。

W3WP.exe 工作者處理程序中可選擇經典模式或整合模式來執行 ASP.NET 套用。

* 經典模式：與 IIS 6 處理方式一樣根據網頁的類型，分派給各自的 IIS ISAPI extension；ASP.NET 扮演了一個 ISAPI 過濾外掛程式器的角色，aspx 由 aspnet\_isapi.dll 進入 CLR 處理再返回給管線。
* 整合模式：已經預載入了 CLR，所有的 HTTP 請求（包括 html, php 等）都要經過 Web Server Core（IIS Core）的有序的若干步驟（稱為事件）。當請求完成 Web Server Core 的所有事件，會給 HTTP.sys 返回 http 回應。

### IIS Express

**IIS Express** 是 IIS 的輕量化版本，能夠被安裝在 Windows XP Service Pack 3 與之後版本的 Microsoft Windows。IIS 7.5 Express 只支援 HTTP 或 HTTPS。
IIS Express 可以單獨下載安裝或是為 Microsoft WebMatrix 安裝的一部份。另外，Visual Studio 在編寫網頁 / 網站並測試執行時也使用 IIS Express 提供虛擬站點服務，避免直接打開本機網頁時頁面上的 JavaScript 由於安全設定而被封鎖。

在命令列使用 IIS Express： 
增加一個 site： 

```
"C:\Program Files\IIS Express\appcmd.exe" add site /name:MyNewSite1 /bindings:"http://localhost:58128" /physicalPath:"D:\MyPrograms\WebApplication1\WebApplication1"
```

檢視 site 列表： 

```
"C:\Program Files\IIS Express\appcmd.exe" list site
```

啟動 site： 

```
"C:\Program Files\IIS Express\iisexpress.exe"  /siteid:3
```

或者 

```
"C:\Program Files\IIS Express\iisexpress.exe"  /site:<站点名>
```

啟動一個臨時網站： 

```
 "C:\Program Files\IIS Express\iisexpress.exe" /path:"G:\01code\04MVC\01bamin\Code\BaminSolution\BM.Admin" /port:8899 /clr:v4.0 /systray:true
```

IIS Express 預設只支援本機連接，不能用 ip 去存取。開啟 / 關閉外部連接：

```
netsh http add urlacl url=http://* :{端口号}/ user=everyone
netsh http delete urlacl url=http://* :{端口号}/
```

IIS Express 設定檔預設位於「我的文件 \IIS Express\Config\」。其中，applicationhost.config 是核心設定檔，包含了 site 的定義、應用程式和應用程式池以及整個 WEB 伺服器的組態。

## 相容性

IIS 是在 Windows 作業系統平台下開發的，這也限制了它只能在這種作業系統下運行。在 Windows XP Professional 中 IIS 的一些功能做出了限制，以與 Windows Server 2003 有所區隔。

## 安全性

IIS 的發展伴隨著安全漏洞；而隨著 IIS 6.0 的發佈，這種情況有所好轉。在低於 6.0 的版本中，其使用者權限是系統使用者；而在 IIS 6.0 中，引入了網路服務帳戶，這是一個限制使用者。這樣，即使服務遭到了破壞，也不會造成系統的癱瘓。

## 擴充性

**FTP Publishing Service**
: 可提供 FTP 或 FTPS 的架站服務

**Administration Pack**
: 管理者套件

**Database Manager**
: Web 版的資料庫管理介面

**Dynamic IP Restrictions**
: 防止網站受到 DDoS（分散式阻斷服務）或是惡意產生大量並行流量的使用者端攻擊

**Windows Media Services**

**URL Rewrite Module**
: URL 複寫模組，可隱藏真實的 URL 格式

**Search Engine Optimization Toolkit**
: 搜尋引擎最佳化套件

**Web Deployment Tool**
: 網站發佈工具

**WebDAV**

Extension

　
: 允許管理員指定自訂的 WebDAV 的每個 URL 的基礎上的安全設定。

**PHP For Windows**
: 為 IIS 加上 PHP 網頁的執行能力

## 參考文獻

## 外部連結

* 台灣微軟 IIS 網站 （頁面存檔備份，存於網際網路檔案館）
* Web 與應用服務（IIS6.0） （頁面存檔備份，存於網際網路檔案館）
* 在 Windows Vista Home Premium 上安裝 IIS 7.0 （頁面存檔備份，存於網際網路檔案館）

## 參見

* Microsoft Personal Web Server
* Windows Server