經典老問題:在安裝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功能」。


Comments

# by 小安

請問黑大, 我這邊把ServiceModel 移除後, 就可以成功執行!  但是,只要每次重新發布他都會長出來, 有方法可以讓她不要再長出來嗎?

# by 小安

請問黑大, 我這邊把ServiceModel 移除後, 就可以成功執行!  但是,只要每次重新發布他都會長出來, 有方法可以讓她不要再長出來嗎?

# by Jeffrey

to 小安,重新發佈就長出來會不會是你上傳的web.config中有相關設定?如果有,記得要把web.config的ServiceModel 設定刪除。

# by Jason

請問一下 我是win10我一樣有跟您一樣的問題 但我在模組裡找不到ServiceModel(3.0版) 請問該怎麼解決?? 謝謝!!

# by Yelo

Win10有同樣問題+1 一樣模組裡找不到ServiceModel(3.0版)

Post a comment