需要什么样的最少的步骤,使ISAPI DLL在IIS7工作查询www.website.com/test/bin/ISAPIGet.dll?a=b? 请不要参考顶部的谷歌搜索,他们是非常通用的,不工作。 我写了Delphi2010很简单ISAPIGet.dll,这在IIS5 Win2000的伟大工程。 然后,我把它放在IIS7 SBS2008,进入C:\的Inetpub \ wwwroot的\网站\测试\ bin文件夹。 创建网站/网页,应用/测试,VirtualDirectory的/ bin中,在对的HandlerMappings / bin中添加脚本映射的* .dll我ISAPIGet.dll,让我在ISAPIandCgiRestrictions DLL,创建32位ApplicationPool不受管理的代码,经典模式,它结合到/测试中的应用。 当quering www.website.com/test/bin/ISAPIGet.dll?a=b我收到各种错误像500,503(当应用程序池失败),而网页www.website.com工作正常。 还有什么应该怎么办? 我是否需要配置web.config文件,在哪里以及如何?
Answer 1:
我记得,我不得不让我们的ISAPI DLL在IIS7上WinSvr2008R2(64B)运行类似的问题。 我写下了一些快速的笔记来帮助我再说一遍,终于得到了它的工作步骤。 我会尽量提供与这里(至少我们所做的事情)。
- 授予“读取和运行,列出文件夹内容,和读取”权限的IUSR到文件夹
C:\PathToISAPI_DLL
- 该ISAPI DLL需要运行到所有的DLL文件复制
c:\windows\syswow64
文件夹(例如,MIDAS.DLL,dbxmss.dll等) - 启动IIS管理器
- 添加应用程序池“MyAppPool” [不管理的,经典的,现在开始]
- 更改新的应用程序池的“高级设置”,让32位,再加上设置空闲超时
- 一个应用程序“MyApp的”添加到您的网站使用“MyAppPool”,并设置相应的物理路径
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。 我一直运行appcmd
在DOS提示符下命令来完成配置的东西。
有时候,我还是看到了404错误,在这种情况下,我从与ISAPI.DLL文件夹中删除的web.config文件并运行最后两个appcmd
再次命令。 当然,我的ISAPI DLL没有在web.config文件中的任何其他设置,所以它不会伤害到删除它...
Answer 2:
难道不只是因为DLL是32位和IIS7是一个64位的过程,从而无法读取德尔福32位的dll?
您的主页是由IIS没有问题的处理静态html。
但是,当IIS尝试加载ISAPIGet.dll
,它失败,因为它不是一个64位的库,或者它的依赖的一个缺失。
- 你确定你在32位模式下使用IIS7的应用程序池?
- 你有在同一路径或C所有需要的子库和BPL:\ WINDOWS \ SysWow64资料?
文章来源: how to configure Delphi 2010 ISAPI.dll in IIS7 64bit? [closed]