經典老問題:在安裝ASP.NET 4.5後安裝.NET 3.0 WCF(或手動執行Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe)後ASP.NET 4網站噴出以下錯誤:
Could not load type ‘System.ServiceModel.Activation.HttpModule’ from assembly
'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
無法從組件 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 載入型別 'System.ServiceModel.Activation.HttpModule'。
過去,這只需重新執行v4.0.30319\aspnet_regiis -i就藥到病除(參考),但在Windows 8/IIS8上則行不通:
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i
Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440
在本機電腦上安裝及解除安裝 ASP.NET 的管理公用程式。
Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。
開始安裝 ASP.NET (4.0.30319.33440)。
這個作業系統版本不支援這個選項。系統管理員應該改用 [開啟或關閉 Windows 功能」對話方塊、[伺服器管理員] 管理工具或 dism.exe 命令列工具,隨著 IIS8 一起安裝/解除安裝 ASP.NET 4.5。如需詳細資訊,請參閱 http://go.microsoft.com/fwlink/?Link71。
完成安裝 ASP.NET (4.0.30319.33440)。
aspnet_regiis表示自己不適用Win8,在Windows 8+應改用「開啟或關閉Windows功能」安裝ASP.NET 4.5。
只是,試過移除並重裝ASP.NET 4.5,問題依舊。再來恐得考量移除重裝IIS8,重裝IIS網站應用程式重設工程浩大,動手前先爬爬文找找較不傷身體的解法,幸運找到一篇參考文件。程序如下:
由IIS管理員找到站台的「模組」項目:
開啟「模組」可發現ServiceModel及ServiceModel-4.0,第一筆為3.0版,第二筆為4.0版。
將ServiceModel(3.0版)移除,天下太平~
【後記】
本次禍首:IIS不認得SVC,手動執行ServiceModelReg.exe才惹出麻煩,在Windows 8/IIS8,要設定WCF請愛用「開啟及關閉Windows功能」。