Asp-Classic

安裝 Windows Update KB4340558 後,如何在經典 ASP 中正確實例化 32 位 COM 對象?

  • July 11, 2018

在 Windows Server 2012 R2 上,安裝更新KB4340558(更新歷史記錄)/ KB4338424(已安裝更新)後,我們無法再在 32 位模式下使用 .NET 在經典 ASP 中實例化 .NET .DLL(互操作)server.createobject。我們收到錯誤 0x800A01AD“ActiveX 組件無法創建對象”

當我們解除安裝更新時,錯誤消失了。儘管我盡了最大努力,但我無法找到解除安裝的替代解決方案。我們更願意重新安裝更新並對 Windows Server 和/或 DLL 進行任何必要的更改,以允許正確實例化 COM 對象。系統日誌中沒有任何線索,CVE 數據庫中沒有任何線索,ASP 正在生成的錯誤中也沒有任何線索。請幫忙!

我們也受到了多個客戶的影響。

我排除了我們程序集的無效強名稱簽名,因為來自框架本身的 .NET 程序集也受到該拒絕訪問錯誤的影響。

最後我設法通過配置解決了這個問題。顯然,網站的身份驗證現在必須與應用程序池的身份相匹配。或者IUSR不再有足夠的權限。

在此處輸入圖像描述

編輯:19.07.2018

警告!這種變化也有副作用:

不再呼叫 asp-classic 事件“Session_OnEnd”,因此最終無法釋放資源。但也有一個解決辦法!

ASP-Config-Property “system.webServer/asp/runOnEndAnonymously” 必須為 “false”,然後事件再次觸發。

在此處輸入圖像描述

編輯 2:2018 年 7 月 23 日

正如Dijkgraaf所指出的,微軟現在認為這種“新行為”是一個錯誤。所以我想我的“解決方案”現在應該被認為是一種解決方法,直到一個新的更新檔來拯救。

引用自:https://stackoverflow.com/questions/51289285