从asp.net Web服务调用vb6对象失败,但在表单应用程序中工作

时间:2010-01-20 15:43:26

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

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

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

A中的内部方法调用因vb6错误而失败(A方法在Windows应用程序事件日志中记录这些错误):

70(拒绝权限)

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

计算机默认权限设置不会将具有CLSID {xxx}的COM服务器应用程序的本地激活权限授予来自地址LocalHost的用户NT AUTHORITY \ NETWORK SERVICE SID(S-1-5-20)(使用LRPC)。可以使用组件服务管理工具修改此安全权限。

有问题的对象(第三个vb6组件是ActiveX EXE)已经使用DCOMCNFG(组件服务)进行配置,并为NETWORK SERVICE甚至Everyone提供了完整的启动,激活和访问权限。此外,从资源管理器中,已经为NETWORK SERVICE提供了所有必需的vb6组件的完全控制/权限(也尝试了所有人)。

同一台计算机上的Windows窗体应用程序能够成功调用A中的方法。同一个Web服务可以在另一台具有32位操作系统的计算机上运行。

Web服务和Forms应用程序都是在平台目标设置为“x86”的情况下构建的。

我们如何让Web服务调用在64位计算机上运行?

1 个答案:

答案 0 :(得分:0)

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