【问题标题】:Calling vb6 objects from asp.net web service fails but works from forms app从 asp.net Web 服务调用 vb6 对象失败,但在表单应用程序中有效
【发布时间】:2011-01-07 08:09:35
【问题描述】:

我们有一个在 Windows Small Business Server 2008 SP2(64 位)上运行的 asp.net Web 服务。它位于自己的应用程序池中。我们已经尝试了托管管道模式的集成和经典设置。启用 32 位应用程序设置为 True。它无法成功调用 vb6 dll 方法,但同一台机器上的 Windows 窗体应用程序可以。

实例化了两个 vb6 dll(A 和 B)。 A 中的方法作为其参数之一传递了对 B 的引用。然后该方法调用自身内部的其他方法,这些方法也需要对 B 的引用。

A 中的那些内部方法调用失败并出现此 vb6 错误(A 方法将这些错误记录在 Windows 应用程序事件日志中):

70(权限被拒绝)

Windows 系统事件日志中还记录了另一个错误:

机器默认权限设置不会将 CLSID {xxx} 的 COM 服务器应用程序的本地激活权限授予来自地址 LocalHost (使用 LRPC)。可以使用组件服务管理工具修改此安全权限。

有问题的对象(第三个 vb6 组件,它是一个 ActiveX EXE)已经使用 DCOMCNFG(组件服务)进行了配置,并为 NETWORK SERVICE 甚至每个人提供了完整的启动、激活和访问权限。此外,从 Explorer 开始,所有必需的 vb6 组件都被赋予了对 NETWORK SERVICE 的完全控制/权限(每个人都试过了)。

同一台机器上的 Windows 窗体应用程序能够成功调用 A 中的方法。相同的 Web 服务在另一台具有 32 位操作系统的机器上工作。

Web 服务和 Forms 应用均已构建,平台目标设置为“x86”。

我们如何才能让 Web 服务调用在 64 位机器上工作?

【问题讨论】:

  • 由于 Web 服务器 (IIS) 是 64 位软件,您可能会遇到不兼容的问题。即使启用了兼容模式,也只是在操作系统级别。我不知道 IIS 有能力处理调用。
  • 让我澄清一下:Web 服务能够调用 A (vb6) 中的方法,但随后方法 A 无法通过 Web 服务传递给它的 B 引用调用其他 vb6 方法。

标签: asp.net com vb6 web-services windows-server-2008


【解决方案1】:

Web 服务是否使用任何模拟运行?如果没有,值得尝试在 web.config 文件中设置身份以使用专用的 Windows 帐户,然后确保该帐户具有启动/执行 dcom 权限集。

【讨论】:

  • Web.config 文件有“”。在 IIS 中,应用程序池标识设置为 NetworkService。那么这是否意味着它正在冒充或连接为 NetworkService?
猜你喜欢
  • 2021-10-19
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多