0

我有一个服务器应用程序 DCOM/datasnap(delphi 7)、一个客户端应用程序(通过 httpsrvr.dll 调用服务器)和一个 Web 服务 DLL(delphi 7)。这个 dll 在 asp.net web 应用程序上调用。在 IIS6 网络服务器上一切正常但是当我想在 IIS 7 环境 64(Windows Server 2008 RC2 或七个 64 位)上安装时出现问题: 1。http 调用不起作用(httpsrvr.dll 在 ISS7 网站上定义) 2。asp.net (2.0) 上的 WS 调用不起作用

我已经测试了一个 Apache 2.2 解决方案,链接客户端(exe delphi)服务器可以工作(cgi bin apache 目录上的 httpsrvr.dll),但有 oleVariant 大小的限制(超时),但我无法设置我的 dll Web 服务。URL 类似于 'http://127.0.0.1/cgi-bin/WABridge.dll/soap/IWABridge (此 url 是 asp.net 应用程序上的 URL 代理)。此网址不适用于 IE(或 FF)-> 内部错误。如果我在 FF 上设置 'http://127.0.0.1/cgi-bin/WABridge.dll/IWABridge,我会看到 wsdl 定义页面,但在 asp.net 网页上找不到错误 404 文件...

4

2 回答 2

2

如何在 IIS7.5(64 位)上运行 Asapi dll

创建应用程序池

  1. 打开 IIS,添加应用程序池
  2. 命名为“AppPool32”</li>
  3. 更改属性:

    • Net Framework 版本:无托管代码
    • 托管管道模式:经典
    • 启用 32 位应用程序:True

允许 Isapi 和 Cgi

  1. 在计算机名的根目录上,双击 Isapi & Cgi Restriction
  2. 点击添加
  3. Isapi DLL 的浏览器
  4. 检查允许扩展路径执行

创建应用程序

  1. 右键单击网站 > 默认网站节点,然后单击添加应用程序...
  2. 选择别名、应用程序池和物理路径。您选择的应用程序池应该是您刚刚创建的“AppPool32”。

允许 ISAPI DLL 在应用程序中执行

  1. 在树视图中选择应用程序节点并双击 Hander Mappings。
  2. 单击添加脚本映射...
  3. 键入 *.dll 的请求路径,选择 IsapiModule 模块,并为其命名。单击确定。

我确实有一些问题,比如

由于配置问题,无法加载模块 DLL 'C:\Program Files\Microsoft\Exchange Server\V14\ClientAccess\Owa\auth\exppw.dll'。当前配置仅支持加载为 x86 处理器架构构建的图像。数据字段包含错误号。要了解有关此问题的更多信息,包括如何解决此类处理器体系结构不匹配错误,请参阅http://go.microsoft.com/fwlink/?LinkId=29349

转到 C:\Windows\System32\inetsrv\config\applicationHost.config

有变化

"添加名称="kerbauth" image="C:\Program Files\Microsoft\Exchange Server\V14\Bin\kerbauth.dll"/>"

进入

"添加名称="kerbauth" image="C:\Program Files\Microsoft\Exchange Server\V14\Bin\kerbauth.dll" preCondition="bitness64" />"

我使用 preCondition="bitness64"

那是我的解决方案。出现此错误是因为 WebOffice 已启动。

于 2011-12-06T14:56:26.413 回答
1

我认为问题在于 Web Service DLL 是 32 位 DLL,无法由 64 位应用程序(在本例中为 IIS)加载。这里有两种可能的解决方案: (1) 将 DLL 重新编译为 64 位 DLL,为此您需要 Delphi XE2。(2) 如果 DLL 是 COM DLL,则可以使用 Windows 包装器将 32 位 COM DLL 转换为 64 位。

第一个选项是最好的,但如果您有不兼容 64 位的第三方组件或库,则可能很难实现。第二个选项应该可以在没有任何重新编译的情况下工作,但是您确实会受到一些性能影响。

于 2011-12-06T10:33:21.053 回答