Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
经典ASP错误:Server.CreateObject失败或未找到入口点DllRegisterServer_Dll_Asp Classic_Windows Server 2016_Iis 10 - Fatal编程技术网

经典ASP错误:Server.CreateObject失败或未找到入口点DllRegisterServer

经典ASP错误:Server.CreateObject失败或未找到入口点DllRegisterServer,dll,asp-classic,windows-server-2016,iis-10,Dll,Asp Classic,Windows Server 2016,Iis 10,我刚刚将一个旧的经典ASP应用程序迁移到运行IIS 10的Windows 2016服务器上,我无法使用在运行IIS 8的Windows 2012上完美运行的DLL 在过去的两天里,我一直在尝试我能想到的一切,但运气不佳。甚至用Visual Studio 2017构建一个新的DLL——这也不起作用。有人遇到这个问题并解决了吗?我希望如此,因为我不想在这一点上倒退 当调用“Server.CreateObject(nameOfDll)”且错误为“Server.CreateObject失败”或“未找到入

我刚刚将一个旧的经典ASP应用程序迁移到运行IIS 10的Windows 2016服务器上,我无法使用在运行IIS 8的Windows 2012上完美运行的DLL

在过去的两天里,我一直在尝试我能想到的一切,但运气不佳。甚至用Visual Studio 2017构建一个新的DLL——这也不起作用。有人遇到这个问题并解决了吗?我希望如此,因为我不想在这一点上倒退

当调用“Server.CreateObject(nameOfDll)”且错误为“Server.CreateObject失败”或“未找到入口点DllRegisterServer”时,会发生这种情况

DLL与MSI安装程序一起安装。我还尝试了regsvr32和regasm,但没有成功。我认为这是一个兼容性问题,我希望你们中的一个聪明人知道如何解决这个问题

**更新**


我安装了一台运行IIS 8的新2012服务器,以测试Lex Li和Lankymart提出的建议。它在那台服务器上工作没有任何问题。然后,我对运行IIS 10的Windows 2016服务器进行了更改,这给了我一个问题,但它没有修复该问题,但错误消息已更改:“对象不支持此属性或方法”。它似乎正在读取DLL,但无法识别方法

4天后,我发现了一个坚如磐石的解决方案,可以将32位COM DLL安装到运行IIS 10的Windows 2016服务器中。这有点复杂,但这里是:

必须使用两个注册实用程序来注册32位COM DLL,即gacutil.exe和RegAsm.exe。您应该确保在安装新的DLL之前卸载任何以前的DLL。程序RegSvr32.exe将无法运行。这是一个托管代码DLL

将DLL文件复制到系统文件夹 Windows Server 2016在2018年7月21日编写时有一个怪癖。如果试图通过将COM DLL复制到System32文件夹来注册COM DLL,则RegAsm无法找到它

但是,如果将其复制到SysWow64文件夹并运行RegAsm,您将看到RegAsm将文件导出到System32文件夹。这显然是某种错误解决方案是将DLL文件复制到System32和SysWow64文件夹。

定位regasm和gacutil程序 RegASM.exe可在C:\Windows\Microsoft.NET\Framework\v4.0.30319中找到

Gacutil.exe可以在C:\Program Files(x86)\Microsoft SDK\Windows\v8.1A\bin\NETFX 4.5.1工具中找到

如果未找到Microsoft SDK文件夹,则必须安装Windows 8.1 SDK,该SDK具有用于注册32位COM DLL的Gacutil.exe。可从以下网址下载

重要提示:仅安装.NET Framework 4.5.1。当系统提示您选择要安装的功能时,使用软件开发工具包

安装DLL
  • 将DLL和TLB复制到Windows/System32和SysWOW64文件夹。如果tlb不存在,只需复制dll即可

  • 以管理员身份打开命令提示符

  • 键入regasm.exe mydll.dll/tlb:mydll.tlb/codebase。应该说类型库已成功注册。如果DLL未安装,请尝试使用Regsvr32.exe安装它。某些dll(如csguid.dll)需要旧的安装过程

  • 键入gacutil.exe/i mydll.dll,将dll安装到GAC。如果找不到文件,您可能必须键入gacutil/ic:\windows\system32\mydll.dll。GAC是全局程序集缓存,跟踪计算机上的所有程序集,以便在调用它们时不会发生冲突


  • 检查你是否先点击了这个。我可能会重复设置一个新的2012服务器来测试Lex Li和Lankymart提出的建议。它在那台服务器上工作没有任何问题。然后,我对Windows 2016服务器进行了更改,这给了我一个问题,但它没有解决问题,但错误消息已更改:“对象不支持此属性或方法”。它似乎正在读取DLL,但无法识别方法。