我有一个用Delphi编写的ISAPI应用程序。应用程序使用运行时包进行编译。基本上,所有相关的bpls也应该部署到启用ISAPI的目录,以便使ISAPI dll正常工作。但是,在调用ISAPI DLL时,我总是会遇到错误。
如果我的ISAPI DLL没有使用运行时包进行编译,那么它可以正常工作。
运行时包应该是问题的原因。到目前为止,唯一的解决方案是将运行时包路径添加到系统环境变量:%path%并重新启动PC。
是否有任何其他解决方案可以通过不改变环境变量?
我正在使用Windows 7和IIS 7以及Delphi 2010。
答案 0 :(得分:1)
对于ISAPI DLL和运行时bpl位于同一目录中的情况,请检查ISAPI DLL和运行时.bpl文件的文件权限,并确保Internet Guest帐户具有读取+执行权限
答案 1 :(得分:0)
您是否尝试将.bpl文件放在ISAPI dll所在的目录中?
如果这不起作用,那么为ISAPI创建安装程序,此安装程序应将所有需要的.bpl文件复制到Windows系统目录(您可以使用GetSystemDirectory()
API函数获取它,通常这是<WindowsDir>\system32
)。对于InnoSetup,这是{sys}
文件目的地。
答案 2 :(得分:0)
BPL文件必须位于机器的系统路径中或可执行文件的目录中(在这种情况下,我相信是svchost.exe?)。现在,有趣的部分。随着每个应用程序的启动,它会抓取当时的环境快照。如果添加到路径,则必须重新启动计算机才能使其生效,或者重新启动应用程序(在这种情况下涉及重新启动操作系统)。