The Will Will Web | 利用 [伺服器管理] 無法新增或移除角色或功能的問題 (IIS7)

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

利用 [伺服器管理] 無法新增或移除角色或功能的問題 (IIS7)

前幾天再安裝設定 Windows Server 2008 主機時,在安裝到 .NET Framework 3.5 功能時無論如何都無法安裝成功的情況,連新增或移除特定 IIS 角色服務也都會失敗,整個錯誤訊息 (如下圖) 就是無法理解,花了幾個小時的時間才發現因為 IIS7 共用設定的關係讓所有與 IIS7 ��關的功能或角色服務都無法安裝成功!

如果單純只是安裝 IIS 元件失敗的話當時可能會想到與 IIS 有關,但當時我安裝的卻是 .Net Framework 3.5.1 功能,當時壓根沒想到原來是我的 IIS7 共用設定導致安裝問題。

最後查詢到 KB 954856 才發現原來就是因為我設定了「共用設定」的關係才導致所有與 IIS 有關的元件全部都無法安裝或移除,這個問題即便到了 Windows Server 2008 R2 ( IIS 7.5 ) 還是依然存在,而且這個問題已經被微軟確認為是一個 Bug。

問題發生的原因在於 [共用設定] 的實體路徑是在 UNC 路徑上,由於安裝 IIS 相關元件時所使用的權限為 NT AUTHORITY\SYSTEM (本機系統),所以無法存取網路上的資源,這導致要修改 IIS 設定時會導致因為無法變更 applicationHost.config 的內容而發生權限不足的問題而導致失敗!

就算錯誤是合理的,但這錯誤訊息也未免太難以理解 = =』』

雖然微軟的 KB 954856 有提供權宜之計(Workaround),但我認為該文件並沒有寫完整,反而會讓需要使用共用設定的人發生其他莫名的錯誤,因此請建議用我的方式進行設定:

1. 關閉 [共用設定]

2. 關閉 [共用設定] 時,會跳出一個對話方塊來,請務必選取 [是(Y)] 好讓目前最新版的 applicationHost.config 能夠複製回本機!

3. 這時在進一步安裝或移除 IIS 相關的功能或角色服務

注意: 由於在安裝 IIS 相關功能或角色服務時會連帶異動 applicationHost.config 的內容,所以 UNC 上的 applicationHost.config 將不會有異動的部分。

例如你安裝一個 IIS 角色服務是一個 HttpModule,而安裝完成後本機的 applicationHost.config 會預設載入該模組,但 UNC 上的 applicationHost.config 並沒有載入模組的定義!因此您必須先「匯出設定檔」到 UNC 路徑上才能確保 WebFarm 的設定是對的,而且要記得所有 WebFarm 的主機都要同時做完新增或移除角色服務的動作後再全部一起上線,否則很有可能會遇到設定錯誤的情況!

4. 重新匯出設定檔

5. 重新啟用共用設定

相關連結