0

我有一个用 Delphi XE 编写的 ISAPI 模块(本机 - 没有 ASP.net 等)。尝试在 Win 7 64 企业台式机上的 IIS 7.5 上运行它。

应用程序池、网站等配置正确,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 已获得执行代码的正确权限,并且应用程序池已正确配置 - 我的大量初始化代码在调用 application.run之前在 DLL 中执行- 所以这不是一个简单的配置或权限问题 - 503 错误并且事件日志条目也表明了这一点。

4

2 回答 2

0

我找到了我的问题的线索@

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

**

回复:混乱的站点配置;事件日志 2009 年 10 月 22 日晚上 8:48 中的“未能找到 RegisterModule ...”错误 从模块列表中删除 aspnet_isapi.dll - 它是 ISAPI 扩展,而不是模块。Anil Ruia 高级软件设计工程师 IIS 核心服务器

**

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

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

此页面提示我 - 我的 dll 可能注册/许可不正确,并且 IIS 将其作为模块运行,而不是扩展 - 因此:““找不到 RegisterModule”。

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

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

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

于 2012-09-13T19:41:08.700 回答
0

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

于 2017-03-14T16:50:45.527 回答