我们正在使用 C# COM 组件将我们的 asp 经典应用程序链接到 SQL Server。
自从 Windows 更新以来KB4338819
,当我运行应用程序时,我们收到 ASP 异常:
Microsoft JScript runtime error '800a01ad'
Automation server can't create object
执行 ASP 行:
var foo = Server.CreateObject("MyComComponent");
如果我卸载更新,它就可以正常工作。
应用程序池设置为允许 32 位应用程序(值:true
)(即使没有更新,如果设置为,false
我们也会收到相同的错误)
有想法吗?还有更好的地方可以问这样的问题吗?
谢谢!
更新:
微软承认了这个问题,但他们仍在努力寻找解决方案。同时,他们在这里提出了一些解决方法:
答案1
答案2
我有同样的问题。在 asp 应用程序中,我无法从 .Net 程序集创建 COM 对象(独立于 32 位或 64 位应用程序)。我有 Windows 身份验证和身份 NetworkService。我尝试更改它,但没有帮助。只有一件事有帮助 - 卸载 kb4338819。
答案3
Default.asp 文件 ---------------- <% '默认.asp ' 应用程序池设置为允许 32 位应用程序 Response.Write "你好<br/>" ' Microsoft 脚本运行时库( C:\Windows\System32\scrrun.dll 和 C:\Windows\SysWOW64/scrrun.dll ) 设置 fso = Server.CreateObject("Scripting.FileSystemObject") ' 确定 设置 d = Server.CreateObject("Scripting.Dictionary") ' 确定 ' ADO 的主互操作程序集 (PIA) ( C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\adodb.dll ) 设置 conn = Server.CreateObject("ADODB.Connection") ' 确定 '注释 Application_OnStart 的代码时失败(在 Global.asa 中更改后手动重新启动池) 'Windows 更新 KB4338819 是罪魁祸首 设置 arr = Server.CreateObject("System.Collections.ArrayList") '失败 设置 md5 = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") '失败 设置 utf16 = Server.CreateObject("System.Text.UnicodeEncoding") '失败 设置 sha1 = Server.CreateObject("System.Security.Cryptography.SHA1Managed") '失败 Response.Write“完成” %> Global.asa 文件 --------------- <script 语言="vbscript" runat="服务器"> 子应用程序_OnStart ' 修复 Windows 更新 KB4338819 ' 修复创建 'System.*' 时出现的 Microsoft VBScript 错误 '800a01ad' ' 调用 ToString 方法(始终存在)来强制初始化对象 修复ArrayList.ToString 修复_MD5CryptoServiceProvider.ToString 修复UnicodeEncoding.ToString fix_SHA1Managed.ToString 子目录结束 </script> <object id="fix_ArrayList" runat="server" scope="应用程序" progid="System.Collections.ArrayList"></object> <object id="fix_MD5CryptoServiceProvider" runat="服务器" scope="应用程序" progid="System.Security.Cryptography.MD5CryptoServiceProvider"></object> <object id="fix_UnicodeEncoding" runat="服务器" 范围="应用程序" progid="System.Text.UnicodeEncoding"></object> <object id="fix_SHA1Managed" runat="服务器" 范围="应用程序" progid="System.Security.Cryptography.SHA1Managed"></object>