﻿# 如何關閉 IIS 的 Socket Pooling 功能

可能很多人沒聽過何謂 Socket Pooling，其實就是在 IIS 裡的 Service 預設會將本機所有的 IP 全部綁定(Binding)起來佔住，即便你在 IIS 裡特別明確指定 IP:Port 給站台使用，其他的程式或服務也不能使用被佔住的 Port。

如下圖，在 IIS 的站台內容的 "IP 位址(I):" 欄位預設的值是 "(全未指定)"，你可以透過 "進階(D)" 按鈕指定本機其他的 IP 位址：

> ![設定 IIS 網站站台的 IP 綁定位址](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/af6848f2e2f9a863377c-Screenshot-080109-121841.png "設定 IIS 網站站台的 IP 綁定位址")  
> 圖1: 設定 IIS 網站站台的 IP 綁定位址

舉例來說，你的主機有兩個 IP 位址，你打算其中一個 IP 的 80 Port 跑 IIS，而另一個 IP 的 80 Port 跑 Apache for Win32，你可能會想說一個 IP 給一個用沒問題，但卻一直都跑不起來！在不做任何修改的情況下 Apache for Win32 與 IIS 是無法同時運作的，除非你先將 IIS 關閉，再將 Apache 先啟動，再將 IIS 啟動，但重開機後 Apache 就又會無法自動跑起來！同樣的，在 IIS 中其他的服務也都一樣有 Socket Pooling 的問題，例如說你想安裝不同的 FTP Server 在你的主機上，且同時使用 Port 21。

如果要解決這個問題，分別在 IIS 5 與 IIS 6 有不同的解法，請參考以下說明：

1.  IIS 5  
      
    How to Disable Socket Pooling  
    [https://web.archive.org/web/20130512153521/http://support.microsoft.com/kb/238131/en-us](https://web.archive.org/web/20130512153521/http://support.microsoft.com/kb/238131/en-us)  
     
    
2.  IIS 6  
      
    Setting metabase property DisableSocketPooling has no effect  
    [https://web.archive.org/web/20090204013645/http://support.microsoft.com:80/kb/813368](https://web.archive.org/web/20090204013645/http://support.microsoft.com:80/kb/813368)  
    
      
    
3.  IIS 7  
      
    IIS binds to all IP addresses on a server when you install IIS 7.0 on Windows Server 2008  
    [https://web.archive.org/web/20130621060004/http://support.microsoft.com/kb/954874/en-us](https://web.archive.org/web/20130621060004/http://support.microsoft.com/kb/954874/en-us)
