使IISAP7中的ISAPI DLL工作以查询www.website.com/test/bin/ISAPIGet.dll?a=b所需的最小步骤是什么?请不要参考热门谷歌搜索,它们非常通用,不起作用。 我在Delphi2010中编写了非常简单的ISAPIGet.dll,它在IIS5 Win2000中运行良好。然后我把它放在IIS7 SBS2008上, 进入C:\ inetpub \ wwwroot \ website \ test \ bin文件夹。 为/ website创建的网站, 申请/测试, / bin的VirtualDirectory, 在HandlerMappings for / bin中添加脚本映射* .dll到我的ISAPIGet.dll, 在ISAPIandCgiRestrictions中允许我的dll, 创建了32位ApplicationPool非管理代码,经典模式, 绑定到/测试应用程序。 在查询www.website.com/test/bin/ISAPIGet.dll?a=b我遇到各种错误,如500,503(当AppPool失败时),而主页www.website.com正常工作。 我还该怎么办?我是否需要配置web.config文件,在哪里以及如何使用?
答案 0 :(得分:5)
我记得,我有类似的问题让我们的ISAPI DLL在WinSvr2008R2(64b)上的IIS7中运行。我写了一些快速笔记,帮助我重复最终使其工作的步骤。我会尝试在这里提供这些(至少我们做了什么)。
C:\PathToISAPI_DLL
c:\windows\syswow64
文件夹(例如,midas.dll,dbxmss.dll等)C:\PathToISAPI_DLL
现在,您必须在DOS提示符下执行几个步骤才能完成配置:
cd /d c:\windows\system32\inetsrv
REM *** Grant rights to execute the DLL ***
appcmd.exe set config -section:isapiCgiRestriction /+[path='C:\PathToISAPI_DLL\ISAPI.dll',allowed='true']
REM *** Grant the url of the Execute access for hander mappings ***
appcmd.exe set config "Default Web Site/MyApp/ISAPI.DLL" "/commit:Default Web Site/MyApp" /section:handlers /accessPolicy:Read,Script,Execute
REM *** Make sure you have an ISAPI module mapping for *.dll at that path ***
appcmd.exe list config "Default Web Site/MyApp" /section:handlers | findstr /i *.dll
这是我的笔记的范围。我已经成功地跟踪了他们几次并且它一直有效。我从不只使用GUI就可以使它工作。我总是必须在DOS提示符下运行appcmd
命令才能完成配置。
有时我仍然会看到404错误,在这种情况下,我会从带有ISAPI.DLL的文件夹中删除web.config并再次运行最后两个appcmd
命令。当然,我的ISAPI DLL在web.config文件中没有任何其他设置,所以删除它不会有什么坏处......
答案 1 :(得分:1)
是不是因为dll是32位且IIS7是64位进程所以无法读取Delphi 32位dll?
您的主页是静态html,由IIS处理没有问题。
但是当IIS尝试加载ISAPIGet.dll
时,它会失败,因为它不是64位库,或者缺少其中一个依赖项。