ISS 7 64位WS dll

时间:2011-12-06 09:58:17

标签: delphi datasnap

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

我测试了Apache 2.2解决方案,链接客户端(exe delphi)服务器工作(cgi bin apache目录下的httpsrvr.dll),限制了oleVariant大小(超时) 但我无法设置我的DLL网络服务。该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文件... TIA, 问候

2 个答案:

答案 0 :(得分:2)

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

创建应用程序池

  1. 打开IIS,添加应用程序池
  2. 命名为'AppPool32'
  3. 更改属性:

    • Net Framework版本:无托管代码
    • 管理管道模式:经典
    • 启用32位应用程序:True
  4. 允许Isapi和Cgi

    1. 在计算机名的根目录上,双击Isapi& CGI 限制
    2. 点击添加
    3. 浏览器到您的Isapi DLL
    4. 选中允许执行的扩展路径
    5. 创建应用程序

      1. 右键单击网站>默认网站节点,然后单击添加 应用...
      2. 选择别名,应用程序池和物理路径。该 您选择的应用程序池应该是您的'AppPool32' 创建。
      3. 允许ISAPI DLL在应用程序中执行

        1. 在树状视图中选择应用程序节点,然后双击“Hander” 映射。
        2. 点击添加脚本地图...
        3. 键入* .dll的请求路径,选择IsapiModule模块,然后选择 给它起个名字。单击“确定”。
        4. 我确实遇到过像

          这样的问题

          模块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

          有变化

          “add name =”kerbauth“image =”C:\ Program Files \ Microsoft \ Exchange Server \ V14 \ Bin \ kerbauth.dll“/>”

          “add name =”kerbauth“image =”C:\ Program Files \ Microsoft \ Exchange Server \ V14 \ Bin \ kerbauth.dll“preCondition =”bitness64“/>”

          我使用preCondition =“bitness64”

          这是我的解决方案。出现这个错误是因为WebOffice已经启动了。

答案 1 :(得分:1)

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

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