无法在模块DLL中找到RegisterModule入口点... - 发生了什么?

时间:2012-09-13 16:50:01

标签: delphi windows-7 iis-7.5 isapi isapi-extension

我有一个用Delphi XE编写的ISAPI模块( native - NO ASP.net等)。尝试在Win 7 64企业桌面计算机上的IIS 7.5上运行它。

App pool,webSite等配置正确,ISAPI模块被允许执行,经典流水线,32位等 - 多次执行这些操作。

同一模块在Win 2008 R2服务器上运行良好,并且也可以在我的Win 7桌面IIS 7.5上运行。

但是我的硬盘驱动器上周死了,我得到了一个新的Win 7安装 - 标准企业级Win 7 Enterprise映像(与我以前的Win 7 64安装不同)。

现在启动模块时,浏览器会挂起一点,然后返回“HTTP错误503.服务不可用”。在IIS中,我看到我的应用程序池在发生错误后停止 - 我知道这意味着Web应用程序中发生了严重错误。

在Windows事件日志中,我发现了以下消息:

“无法在模块DLL G:\ Mikey.dll中找到RegisterModule入口点。数据是错误。”

在DLL dpr。

中调用application.run之后,一些调试字符串显示了错误表面

这里发生了什么?我怎样才能解决这个问题?我的开发工作需要这个部署。

请 - dll被正确许可执行代码并且应用程序池已正确配置 - 我的初始化代码大量执行在DLL BEFORE application.run被调用 - 所以这不是一个简单的配置或权限问题 - 503错误和事件日志条目也表明了这一点。

2 个答案:

答案 0 :(得分:0)

我找到了问题的线索@

http://forums.iis.net/p/1162012/1921878.aspx

**

  

Re:搞砸网站配置; “找不到RegisterModule   ...“事件日志中的错误10-22-2009,8:48 PM删除aspnet_isapi.dll   从您的模块列表 - 它是ISAPI扩展,而不是模块。阿尼尔   Ruia高级软件设计工程师IIS核心服务器

**

意识到当我最初安装IIS时,我没有看到CGI / ISAPI限制小程序,并以不同的方式允许我的dll。

后来我发现我必须专门安装ISAPI支持 - 当我这样做时,我以正确的方式再次允许我的DLL,并删除了原始模块条目(或者我认为)。

这个页面让我失望 - 我的dll可能被错误地注册/许可,IIS将其作为模块运行,而不是扩展 - 因此:“”找不到RegisterModule“。

由于这是全新的部署,我只是卸载了所有IIS模块和功能,确保没有旧的配置文件,并清理注册表。

然后我重新安装了IIS,其中包含了ISAPI限制功能,并根据需要注册/许可了我的ISAPI模块,并设置了应用程序池和网站。现在一切都很好。

谢谢Anil Ruia(无论你在哪里......)

答案 1 :(得分:0)

我在使用Perl模块时遇到此错误。我不得不从applicationHost.config中禁用它。我发现如果您只使用编辑器编辑%Windir%\ system32 \ inetsrv \ config \ applicationHost.config,即使文件编写正确,即使重新启动IIS,更改也不会反映在IIS上。唯一的方法是遵循本指南 https://technet.microsoft.com/en-us/library/cc735153(v=ws.10).aspx。 你基本上需要推出" Notepad"从提升的命令提示符编辑applicationHost.config。这就是我如何解决这个问题。

相关问题