0

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

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

在此处输入图像描述

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

initialization
  CoInitialize(nil);

finalization
  CoUninitialize;

任何人都可以提供任何建议吗?

4

1 回答 1

3

不要使用您自己的 CoInitliaze 调用,而是使用 ServerController 并将 ComInitialization 属性设置为 ciMultiThread 例如。

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

于 2011-04-20T08:01:45.800 回答