如何在IIS7 64bit中配置Delphi 2010 ISAPI.dll?

K-m*_*man 0 delphi iis-7 isapi

使ISAPI DLL在IIS7中工作以查询www.website.com/test/bin/ISAPIGet.dll?a=b所需的最小步骤是什么?请不要参考热门谷歌搜索,它们非常通用,不起作用.我在Delphi2010中编写了非常简单的ISAPIGet.dll,它在IIS5 Win2000中运行良好.然后我把它放在IIS7 SBS2008上,放到C:\ inetpub\wwwroot\website\test\bin文件夹中.创建网站/网页,应用/测试,VirtualDirectory的/ bin中,在对的HandlerMappings/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文件,在哪里以及如何?

Jam*_* L. 5

我记得,我有类似的问题让我们的ISAPI DLL在WinSvr2008R2(64b)上的IIS7中运行.我写了一些快速笔记,帮助我重复最终使其工作的步骤.我会尝试在这里提供(至少我们做了什么).

  1. 将IUSR的"读取和执行,列出文件夹内容和读取"权限授予该文件夹 C:\PathToISAPI_DLL
  2. 将ISAPI DLL需要运行的所有DLL文件复制到该c:\windows\syswow64文件夹中(例如,midas.dll,dbxmss.dll等)
  3. 启动IIS管理器
  4. 添加应用程序池"MyAppPool"[无管理,经典,立即开始]
  5. 更改新应用程序池的"高级设置"以允许32位,并设置空闲超时
  6. 使用"MyAppPool"将应用程序"MyApp"添加到您的网站,并将物理路径设置为 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
Run Code Online (Sandbox Code Playgroud)

这是我的笔记的范围.我已经成功地跟踪了他们几次并且它一直有效.我只是使用GUI 未能让它工作.我总是不得不appcmd在DOS提示符下运行命令来完成配置.

有时我仍然看到404错误,在这种情况下,我从ISAPI.DLL文件夹中删除web.config并appcmd再次运行最后两个命令.当然,我的ISAPI DLL在web.config文件中没有任何其他设置,所以删除它不会有什么坏处...