Delphi Intraweb网站在IIS上崩溃

时间:2011-04-20 07:36:35

标签: delphi iis delphi-7 intraweb

我已经制作了Intraweb ISAPI应用程序。构建dll后,我在IIS上创建了一个Web站点,并为该应用程序创建了一个池。在Inetpub目录上,为Internet来宾帐户和IIS_WPG帐户设置了权限。

当我尝试从IE(http://ip.0.0.1/website/application.dll)访问网页时,它返回 HTTP 500

enter image description here

错误。在互联网上搜索后,它说这是COM初始化的问题。但是在应用程序的数据模块中有这样的代码:

initialization
  CoInitialize(nil);

finalization
  CoUninitialize;

有人可以提出任何建议吗?

1 个答案:

答案 0 :(得分:3)

不要使用自己的CoInitliaze调用,但是instread使用ServerController并将ComInitialization属性设置为ciMultiThread。

从我的IntraWeb课件手册:“当应用程序需要使用(D)COM时,需要TComInitialization类型的ComInitialization属性(ciNone,ciNormal,ciMultiThread)。由于IntraWeb在不同的线程中执行请求,每个线程必须使其成为自己打电话给CoInitialize。 默认情况下,此属性设置为ciNone,表示不需要COM支持。如果需要COM支持 - 例如,如果要连接到DataSnap服务器 - 则需要将ComInitialization设置为ciNormal或ciMultiThreaded。 就个人而言,我发现在ISAPI DLL中以某种方式使用COM时没有理由不将它设置为ciMultiThreaded,尽管IIS 6及更高版本可能已经为您处理了所需的ComInitialization,您应该将其设置为ciNone(但看起来它被设置为其他值时会被忽略,所以ciMultiThread也不会受到伤害。“