您的位置:首页 > 编程语言 > ASP

在使用 ASP 客户端的 Visual Basic IDE 中调试 COM+ 组件时发生错误

2005-01-12 22:03 525 查看
在使用 ASP 客户端的 Visual Basic IDE 中调试 COM+ 组件时发生错误
症状

在基于 Microsoft Windows 2000 的计算机上的 Visual Basic 6.0 中调试 Microsoft COM+ 1.0 版组件时,如果客户端是 Active Server Pages (ASP) 页,则浏览器中可能显示以下错误信息:
Server object, ASP 0178 (0x800A0005) The call to Server.CreateObject failed while checking permissions.Access is denied to this object.在基于 Microsoft Windows XP 的计算机上的 Visual Basic 6.0 中调试 Microsoft COM+ 1.5 版组件时,如果客户端是 Active Server Pages (ASP) 页,则浏览器中可能显示以下错误信息:
Server object, ASP 0178 (0x800A0005) The call to Server.CreateObject failed while checking permissions.Access is denied to this object.仅当您在 Visual Basic 集成开发环境中运行 COM+ 组件时,才会出现此错误。在 COM+ 应用程序的编译状态下运行 COM+ 组件时,将不会出现此错误。

原因

进行身份验证的用户(通常是 IUSR_<计算机名> 帐户,如果您使用匿名访问的话)没有访问 DCOM 服务器(本例中为 VB6.exe)所需的正确权限。在 Visual Basic IDE 中调试 COM+ 组件时,启动用户是交互式用户,访问 DCOM 服务器的用户是进行身份验证的用户。

由于没有用于 VB6.exe 的 DCOM 条目,因此 DCOM 将使用默认权限。在 Windows 2000 和 Windows XP 中,DCOM 默认访问权限默认情况下只授予系统帐户和启动用户。由于启动用户和访问 DCOM 服务器的用户不是同一用户,因此将出现本文“症状”一节中显示的错误信息。

解决方案

可使用两个建议的变通方法:

变通方法 1

在注册表中为 VB6.exe 添加 DCOM 条目。这使您能够设置特定的 DCOM 权限,用于在 Visual Basic 中调试 COM+ 组件。
1.在 DCOM 中创建 VB ASP 调试条目:
a. 启动 Microsoft 记事本或其他文本编辑器,然后键入以下语法(区分大小写):
REGEDIT4
[HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}]
@="VB ASP Debugging"
[HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}\LocalServer32]
@="vb6.exe"
[HKEY_CLASSES_ROOT\AppID\vb6.exe]
"AppId"="{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}"


b. 将文件保存为 Vbaspdbg.reg。
c. 找到保存 Vbaspdbg.reg 文件的文件夹,然后双击此文件(它将自动注册到 Windows 注册表中)。
2.Everyone 帐户添加到 DCOM 权限中,以用于 Visual Basic ASP 调试。

Windows 2000
a. 启动 DCOMCNFG。在开始菜单上,单击运行,然后在对话框中键入 dcomcnfg。
b. 分布式 COM 配置属性页上,单击应用程序选项卡,从列表中选择 VB ASP 调试,然后单击属性
c. VB ASP 调试属性页中,单击安全性选项卡,然后单击以选中使用自定义访问权限复选框。单击编辑
d. 注册表值的权限窗口中,单击添加,然后为允许访问添加 Everyone 帐户。
e. 单击确定,然后单击应用以应用更改并退出分布式 COM 配置属性页。
f. 重新启动计算机,以使更改生效。
Windows XP

a. 启动 COM+ Explorer。在开始菜单中,单击管理工具,然后单击组件服务
b. 依次单击以展开组件服务计算机我的电脑DCOM 配置
c. 右键单击 VB ASP 调试,然后单击属性
d. 安全选项卡上的访问权限下,选择自定义,然后单击编辑
e. 访问权限窗口中,单击添加,然后添加 Everyone account for Allow Access(允许访问的 Everyone 帐户)选项。
f. 单击确定,单击应用,然后再单击确定以应用更改,并退出“DCOM 配置属性”页。
g. 重新启动计算机,以使更改生效。

变通方法 2

1.为进行调试,可将 ASP 页所在的“虚拟目录”的“应用程序保护”设置为“高(独立)”。这将强制 ASP 页在它自己的进程中运行,从而可以更改安全性而不会影响 Web 站点的其他内容。
a. 启动 Internet 服务管理器。
b. 右键单击 ASP 页所在的虚拟目录,然后单击属性
c. 单击虚拟目录选项卡,然后在应用程序保护下拉列表中选择高(独立)
d. 单击应用
2.关闭对此虚拟目录的匿名访问,并确保选中了集成 Windows 验证基本验证
a. 在“虚拟目录”的属性对话框上,单击目录安全性选项卡。
b. 单击匿名访问和验证控制编辑
c. 确保清除了“匿名访问”复选框。
d. 单击集成 Windows 验证基本验证
3.如果使用集成 Windows 验证,请运行客户端浏览器以便使用与 Visual Basic IDE 调试会话相同的用户帐户访问 ASP 页。如果使用基本验证,请输入 Visual Basic IDE 调试会话在其中运行的同一用户帐户的用户名和密码。

注意:第二个变通方法假定 COM 的“默认访问权限”未发生更改。如果“默认访问权限”从未更改过,则 COM 将构建一个访问控制列表 (ACL),以便向系统帐户和服务器标识授予权限。在这种情况下,服务器标识是登录并运行 Visual Basic IDE 调试会话的用户。如果 DCOM 的“默认访问权限”被更改过,则第二个变通方法需要将 Visual Basic IDE 调试会话在其中运行的用户帐户添加到“默认访问权限”中。这可以通过使用 DCOMCNFG 来完成。有关更多信息,请参阅 MSDN 联机资料库中有关 COM 安全性的帮助主题:
http://msdn.microsoft.com/library/psdk/com/security_0icz.htm

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐