use*_*080 30 com asp-classic iis-8 windows-server-2012-r2
在Windows Server 2012 R2上,在安装更新KB4340558(更新历史记录)/ KB4338424(已安装的更新)之后,我们无法再使用32位模式在经典ASP中实例化.NET .DLL(interop)server.createobject
.我们收到错误0x800A01AD"ActiveX组件无法创建对象"
当我们卸载更新时,错误消失.尽管我付出了最大的努力,但我无法找到卸载的替代解决方案.我们希望重新安装更新并对Windows Server和/或DLL进行必要的更改,以允许正确地实例化COM对象.系统日志中没有线索,CVE数据库中没有线索,也没有ASP生成错误的线索.请帮忙!
key*_*don 34
我们也受到了多个客户的影响.
我排除了程序集的无效强名称签名,因为框架本身的.NET程序集也受到访问拒绝错误的影响.
最后我设法通过配置来解决问题.显然,网站的身份验证身份现在已经与应用程序池的身份相匹配.或者IUSR不再具有足够的权限.
编辑:19.07.2018
警告!这种变化也有副作用:
不再调用asp-classic事件"Session_OnEnd",因此最终无法释放资源.但也有一个解决方案!
ASP-Config-Property"system.webServer/asp/runOnEndAnonymously"必须为"false",然后事件再次触发.
编辑2:23.07.2018
正如Dijkgraaf指出的那样,微软现在认为这种"新行为"是一个错误.所以我想我的"解决方案"现在应该被视为一种解决方法,直到一个新的补丁来拯救.
Microsoft已知道此问题,并且相关的KB是"拒绝访问"错误,并且在安装了针对.NET Framework的2018年7月安全和质量汇总更新后,COM激活的应用程序失败
这已经影响了BizTalk,SharePoint,IIS与使用模拟的经典ASP和.NET应用程序.
Classic ASP的变通方法如下
IIS Hosted Classic ASP调用CreateObject for .NET COM对象可能会收到"ActiveX组件无法创建对象"错误:
- 如果您的网站使用匿名身份验证:更改网站匿名身份验证凭据以使用"应用程序池标识".
- 如果您的站点使用基本身份验证或Windows身份验证:作为应用程序池标识登录应用程序一次,然后创建.NET COM组件的实例.之后,其他站点用户将能够在没有失败的情况下激活.NET COM组件.
- 或者,如果您正在使用Windows身份验证并从运行ASP应用程序的Windows Server的控制台访问该网站:创建.NET COM组件的实例也会解决其他站点用户的错误.
我们支持在 IIS 匿名身份验证中运行的经典 ASP 站点。应用程序实例化一个公开为 COM 可见的 DLL .NET 对象。
在应用最近的安全 Windows 更新并重新启动操作系统后,我们的应用程序崩溃并出现以下错误:
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'NameOfObjectInDLL'
Run Code Online (Sandbox Code Playgroud)
在我们的例子中,最后一条建议解决了我们的问题。
IIS > 身份验证 > 匿名身份验证 - 编辑 > “应用程序池身份”
小智 5
这只是为了确认keydon提供的解决方案,结合TimP提供的解决方案。并向他们表示感谢!!
在我们的案例中,我们更改了以下 3 个部分(以及新权限的第 4 个部分):
Web 服务器身份验证属性:使用“应用程序池身份”而不是“特定用户”设置匿名身份验证。
应用程序池“身份”属性:设置为“ApplicationPoolIdentity”而不是“LocalSystem”。
物理路径的网站“连接为”:设置为“应用程序用户(通过身份验证)”而不是“特定用户”。
在 Web 应用程序文件所在的共享文件夹中为“应用程序池标识用户名”添加权限。看看https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities#securing-resources
谢谢!!(对不起,我不能投票给你的解决方案,因为我是初学者,我没有任何声誉)
归档时间: |
|
查看次数: |
4689 次 |
最近记录: |